gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 12:04:47 25 4
gpt4 key购买 nike

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

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

最佳答案

在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com