我在 1Reader 线程/1Writer 线程设置中使用规范的环形缓冲区实现。
由于读取器在缓冲区为空时循环[写入器在缓冲区满时循环]并不断轮询控制变量,因此我调用 pthread_yield(在我的情况下只是 sched_yield 的包装器)以优先考虑系统中的其他线程. 我没有使用任何互斥锁,因为正常运行不需要它。
有没有更好的方法来减轻轮询效应(又名 CPU 燃烧)?我在考虑 pthread 的条件变量——因为我主要在没有数据 [没有空间] 时阻塞线程——但我担心会引入开销。
谢谢