我的多线程代码中有很多自旋锁,大部分时间他们都在等待其他线程工作,从而咀嚼很多cpu使用。在linux中,我通常使用pthread_cond_wait和pthread_cond_signal来暂停线程并在发出信号时唤醒。在boost库中有这样的东西吗?快速浏览一下,我找不到任何东西。
Visual Studio 2005
答案 0 :(得分:4)
找到它,boost会调用它们的条件变量:http://www.boost.org/doc/libs/1_39_0/doc/html/thread/synchronization.html#thread.synchronization.condvar_ref
答案 1 :(得分:1)
您正在寻找Mutex或Semaphore。 Boost库确实有Mutex and Semaphore支持。
Mutex是一个二进制信号量,它被简单地认为是一个锁,只允许一个线程通过你的critical section。
计算semaphores可以帮助简化锁(Mutex)限制过多的情况。