Как я могу изменить список дат, чтобы включить ведущий ноль (0)

Вы спрашиваете,

. Каков наилучший способ ожидания нескольких переменных условий в C ++ 11?

] Вы не можете и должны перепроектировать. Один поток может ожидать только одну переменную условия (и связанный с ней мьютекс) за раз. В этом отношении возможности Windows для синхронизации довольно богаче, чем у семейств примитивов синхронизации типа «POSIX».

Типичный подход с потоковыми безопасными очередями заключается в том, чтобы вставить специальное «все сделано!». сообщение или создать «прерывистую» (или «выключенную») очередь. В последнем случае внутренняя переменная условия очереди защищает сложный предикат: либо доступен предмет , либо , очередь была сломана.

В комментарии вы заметили, что

a notify_all () не будет иметь никакого эффекта, если никто не ждет

Это правда, но, вероятно, не актуально. wait() включение переменной условия также подразумевает проверку предиката и проверку его перед фактическим блокированием для уведомления. Таким образом, рабочий поток, занятый обработкой элемента очереди, который «пропускает» notify_all(), увидит, в следующий раз, когда он проверяет условие очереди, что предикат (новый элемент доступен или завершена очередь) изменился .

-1
задан jamiemca 16 January 2019 в 13:05
поделиться