Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
pthread_cond_wait是否将线程置于等待状态_C_Unix_Pthreads - Fatal编程技术网

pthread_cond_wait是否将线程置于等待状态

pthread_cond_wait是否将线程置于等待状态,c,unix,pthreads,C,Unix,Pthreads,pthread_cond_wait是否将调用线程置于等待状态,以通过pthread_cond_signal/pthread_cond_broadcast唤醒,从而不轮询和搅动CPU 另外,sem_wait是否将线程置于等待状态?如果我正确理解了互斥体获取/释放方法,则会使线程在互斥体上连续轮询,并且不会将线程置于等待状态。是,pthread\u cond\u wait成功后,会使线程等待通知。这就是电话的目的 sem\u wait将使线程处于等待状态,如果无法减少信号量。如果处于高电平状态,则呼

pthread_cond_wait是否将调用线程置于等待状态,以通过pthread_cond_signal/pthread_cond_broadcast唤醒,从而不轮询和搅动CPU


另外,sem_wait是否将线程置于等待状态?如果我正确理解了互斥体获取/释放方法,则会使线程在互斥体上连续轮询,并且不会将线程置于等待状态。

是,
pthread\u cond\u wait
成功后,会使线程等待通知。这就是电话的目的

sem\u wait
将使线程处于等待状态,如果无法减少信号量。如果处于高电平状态,则呼叫将立即返回


在大多数情况下,您不必担心锁是通过忙等待还是通过调度程序实现的。无论哪种方式,您都可以获得有保证的行为,通常库实现者将选择在您运行的平台上可用的最有效的方法。在某些情况下(您有多个内核,且预期等待时间很短),任务正在忙着等待。

是的,调用pthread\u cond\u wait()的任务将处于等待状态:

   pthread_cond_wait atomically  releases mutex and cause the
   calling thread to block on the condition  variable  cond
在当前linux的内部,它使用futex来完成这些工作

sem_wait将阻止该任务,直到可以 如果信号量当前处于禁用状态,则对信号量执行减量
调用时值为零。

是的,但了解锁的行为有助于我们编写更好的算法