c ++多线程同步
这是我的问题的简化版本。
在无限循环中有3个指令执行N个线程:
A -> B -> C -> A -> B -> C -> A -> B -> .......
我希望所有的线程同时执行指令B,即任何线程的B执行都应该在所有线程都到达B时才启动。因此,如果有一个线程执行了B - > C - > A,它应该在此等待,直到其他线程线程也准备执行B.
如果可能的话,请让我知道一个便携式解决方案,可以在Windows和MAC上运行。
您应该检查Boost线程库,特别是有关条件变量的部分。
一串N-1信号量和一个互斥量? 所有线程获取互斥锁,包含一个计数器,如果小于N,则释放互斥锁并在[counter]处等待信号量数组。 第N个线程发现计数器为N,表示所有信号量,将计数器复位为0,执行'B'释放互斥并退出。 其他线程在释放时也执行B,但不能循环并重新进入,直到第N个线程执行'B'并释放互斥锁。
所有多任务操作系统都有信号量/互斥量。 你可以使用一个事件,如果可用的话,而不是信号量。
链接地址: http://www.djcxy.com/p/56063.html上一篇: c++ multithreading synchronization
下一篇: how do I go about tracking down DEPRECATION WARNING related to Bundler