Подскажите пожалуйста, в каком порядке винда будет запускать потоки при выводе из блокировки?
У меня есть задача — нужно строго в определённом порядке класть в очередь сообщения. Добавление идёт из разных потоков. Доступ к очереди синхронизирую через lock(). Суммарно приходит порядка 50-ти сообщений в секунду. Как мне кажется, есть достаточно большая вероятность, что два потока начнут ждать пока третий добавит в очередь и после освобождения ресурса может запуститься не тот поток.
Re: Выбор потока для запуска при выходе из блокировки
Здравствуйте, Аноним, Вы писали:
А>У меня есть задача — нужно строго в определённом порядке класть в очередь сообщения. Добавление идёт из разных потоков. Доступ к очереди синхронизирую через lock(). Суммарно приходит порядка 50-ти сообщений в секунду. Как мне кажется, есть достаточно большая вероятность, что два потока начнут ждать пока третий добавит в очередь и после освобождения ресурса может запуститься не тот поток.
Без явной синхронизации говорить о последовательности распараллеленных событий бессмысленно (сорри за тавтологию). Самый простой способ — сортировать сообщения при вставке.
Re: Выбор потока для запуска при выходе из блокировки
Здравствуйте, Аноним, Вы писали:
А>Всем привет!
А>Подскажите пожалуйста, в каком порядке винда будет запускать потоки при выводе из блокировки?
Алгоритм планировщика не документирован. В разных источниках приводятся его описания, но все они настоятельно рекомендуют ни в коем случае не строить свою логику на этих описаниях. В реальности этот алгоритм меняется от версии к версии. Если Вам нужна строгая очерёдность, то Вам придётся обеспечить её самому.