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

标签 c unix pthreads

pthread_cond_wait 是否将调用线程置于等待状态,以便由 pthread_cond_signal/pthread_cond_broadcast 唤醒,以便它不会轮询和搅动 CPU?

此外,sem_wait 是否将线程置于等待状态?如果我理解正确的话,互斥体获取/释放方法会使线程不断轮询互斥体,并且不会将线程置于等待状态。

最佳答案

是的,pthread_cond_wait成功时,会导致线程等待,直到收到通知。这就是通话的目的。

sem_wait 会将线程置于等待状态如果信号量无法递减。当它处于高电平状态时,调用将立即返回。

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

关于c - pthread_cond_wait 是否将线程置于等待状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9492629/

相关文章:

security - 通过标准输入安全地将密码传递给 openssl

调用一个线程并调用新程序 primeThreads.c

c - 如何停止和继续 pthread?

c - 一旦我们发出了条件变量的信号,我们会继续执行原始线程吗?

c - 使用 GCC 的另一个目录中的静态库和 header

C 预处理器#头文件中包含多个源文件中的错误

c - 将图书馆中的图书馆与外部人员联系起来?

c - 使用 ptrace 提取系统调用名称和参数

c - 零大小的 memblocks 有什么用?

java - 如何通过java将参数传递给shell命令?