C linux pthread线程优先级

eat*_*mon 13 c linux multithreading pthreads thread-priority

我的程序有一个后台线程,用于填充和交换双缓冲区实现的后台缓冲区.主线程使用前端缓冲区发送数据.问题是当我运行程序时,主线程平均获得更多的处理时间.我想要相反的行为,因为填充后台缓冲区是一个更耗时的过程,然后处理并向客户端发送数据.

如何在Linux上使用C POSIX pthreads实现这一目标?

Aln*_*tak 6

根据我的经验,如果在没有优先级的情况下你的主线程获得更多CPU,那么这意味着以下两件事之一:

  1. 它实际上需要额外的时间,与你的期望相反,或

  2. 后台线程正在饥饿,可能是由于锁争用

改变优先级不会解决其中任何一个问题.

  • 这不是答案.在某些情况下,您希望降低线程的优先级以防止另一个线程的饥饿.例如,如果您正在使用GPU计算并具有CPU计算,则您希望CPU计算线程具有稍低的优先级以提高GPU利用率. (3认同)