linux - 当没有人等待条件时 pthread_cond_broadcast 的性能

标签 linux performance pthreads condition-variable nptl

如果我调用 pthread_cond_broadcast 并且没有人在等待该条件,则 pthread_cond_broadcast 是否会调用上下文切换和/或调用内核?

如果不是,我可以依赖它非常快(我的意思是,只需在当前进程中运行少量汇编指令然后返回)?

最佳答案

POSIX 中没有任何保证,但由于您的问题被标记为 linuxnptl,因此可以在该上下文中给出答案。

如果条件变量上没有服务员,则 nptl glibc code for pthread_cond_broadcast()只是采用低级锁来保护条件变量本身的内部,测试一个值然后解锁低级锁。低级锁本身使用futex,只有在该锁存在争用时才会进入内核。

这意味着除非条件变量本身存在大量争用(即大量线程频繁调用 pthread_cond_broadcast()/pthread_cond_signal()相同的条件变量)不会对内核进行系统调用,开销也只是一些锁定指令。

关于linux - 当没有人等待条件时 pthread_cond_broadcast 的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18683211/

相关文章:

c - 这段关于线程的 C 代码应该如何工作?

c++ - boost::thread vs std::thread vs pthread

python - SSL v2 undefined symbol 、Manjaro 和 Ubuntu

linux - 写入 mmap 的内存是否会阻塞?

java - 测试磁盘性能: differs with and without using Java

javascript - 使用自定义绑定(bind)、扩展器或自定义函数扩展 Knockout

Java:关于处理大量数据的建议。 (双人组)

c - 使用 pthread_kill() 有危险吗?

linux - 找到编号 X 下面的编号子目录并删除它们

c - 在 Linux 内核模块中重新计算 TCP 校验和