信号量和条件变量之间的差异

use*_*900 11 multithreading pthreads

我正在实现条件等待,信号量或条件变量都可用于实现它.这两者有什么区别吗?从性能的角度来看更具体?

我听说当一个线程等待条件变量时,它不会被调度,直到它被发出信号.这可确保它不会消耗CPU周期.但是对于信号量而言,这是不正确的,即使等待,信号量也会消耗CPU周期?

per*_*eal 19

如果所有线程都在等待某个事件,例如,提交任务,那么您可以通过在事件上使用条件变量将它们全部唤醒.

如果您的资源有限,比如为您的线程保留10页内存,那么您需要等待页面可用.发生这种情况时,您只需要让一个线程开始执行.在这种情况下,您可以使用信号量解锁尽可能多的线程作为可用页面.