我的多线程代码中有很多自旋锁,大部分时间它们都在等待其他线程工作,因此会占用大量的 CPU 资源。在 linux 中,我通常使用 pthread_cond_wait 和 pthread_cond_signal 来暂停线程并在收到信号时唤醒。boost库中有这样的东西吗?快速浏览一下,我找不到任何东西。
视觉工作室 2005
找到它,boost 称它们为条件变量: http: //www.boost.org/doc/libs/1_39_0/doc/html/thread/synchronization.html#thread.synchronization.condvar_ref
您正在寻找互斥体或信号量。Boost 库确实支持Mutex 和 Semaphore。
互斥量是一个二进制信号量,它被简单地认为是一个锁,只允许一个线程通过你的临界区。
计数信号量有助于简化某些锁(互斥锁)过于严格的情况。