【发布时间】:2012-05-28 04:33:03
【问题描述】:
我在 1Reader 线程/1Writer 线程设置中使用规范的环形缓冲区实现。
由于读取器在缓冲区为空时循环[写入器在缓冲区满时循环]并不断轮询控制变量,因此我调用 pthread_yield(在我的情况下它只是 sched_yield 的包装器)以优先考虑其他线程在系统中。我没有使用任何互斥锁,因为正常运行不需要它。
有没有更好的方法来减轻轮询效应(也就是 CPU 燃烧)?我在考虑 pthread 的条件变量——因为我主要在没有数据 [没有空间] 时阻塞线程——但我担心会引入开销。
谢谢
【问题讨论】:
标签: c pthreads conditional-statements polling circular-buffer