用信号代替自旋锁

时间:2009-06-03 05:52:20

标签: c++ boost spinlock

我的多线程代码中有很多自旋锁,大部分时间他们都在等待其他线程工作,从而咀嚼很多cpu使用。在linux中,我通常使用pthread_cond_wait和pthread_cond_signal来暂停线程并在发出信号时唤醒。在boost库中有这样的东西吗?快速浏览一下,我找不到任何东西。

Visual Studio 2005

2 个答案:

答案 0 :(得分:4)

答案 1 :(得分:1)

您正在寻找Mutex或Semaphore。 Boost库确实有Mutex and Semaphore支持。

Mutex是一个二进制信号量,它被简单地认为是一个锁,只允许一个线程通过你的critical section

计算semaphores可以帮助简化锁(Mutex)限制过多的情况。