Многопоточная синхронизация c ++

Вот упрощенная версия моей проблемы.

Есть N потоков, выполняющих следующие 3 инструкции в бесконечном цикле:

A -> B -> C -> A -> B -> C -> A -> B -> .......

Я хочу, чтобы все потоки выполняли инструкцию B одновременно, т.е. выполнение B любым потоком должно начинаться только в том случае, если все потоки достигли B. Итак, если есть поток, который выполнил B -> C -> A, он должен ждать здесь, пока другие потоки также не будут готовы выполнить B.

Если возможно, дайте мне знать портативное решение, которое будет работать как на Windows, так и на MAC.

7
задан Kerrek SB 14 November 2011 в 13:11
поделиться