gpt4 book ai didi

c - 减轻环形缓冲区轮询影响的策略

转载 作者:太空宇宙 更新时间:2023-11-04 01:38:11 25 4
gpt4 key购买 nike

我在 1Reader 线程/1Writer 线程设置中使用规范的环形缓冲区实现。

由于读取器在缓冲区为空时循环[写入器在缓冲区已满时循环]并不断轮询控制变量,我调用 pthread_yield(在我的例子中只是 sched_yield 的包装器)以优先考虑其他线程在系统中。我没有使用任何互斥量,因为正常运行不需要它。

有没有更好的方法来减轻轮询效应(也就是 CPU 燃烧)?我在考虑 pthread 的条件变量 - 因为我主要在没有数据 [没有空间] 时阻塞线程 - 但我担心会引入开销。

谢谢

最佳答案

使用条件变量,开销比忙等待低很多,并且正确使用互斥量确保您的数据在您期望的时候实际存在(因为它们强制排序)。

此外,如果在一般情况下您真的不需要互斥量,锁争用应该很低甚至不存在。

关于c - 减轻环形缓冲区轮询影响的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10689250/

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