C Linux:如何以编程方式检测进程中的空闲线程?

C Linux:如何以编程方式检测进程中的空闲线程?,c,linux,multithreading,C,Linux,Multithreading,当前,在流程中定期启动低优先级的洗涤器任务。有时,由于锁争用,此低优先级任务可能会干扰其他高优先级任务。我希望在进程中的其他线程空闲锁定等待锁定/不运行状态时,有机会运行这种低优先级任务。我知道,一旦启动了这样的低优先级任务,其他高优先级任务可以很快开始运行,但是如果进程中的其他线程已经很忙,我希望避免运行这样的低优先级任务。一个简单的方法是跟踪有多少线程正在等待一个任务,如果至少有x多个等待线程,并且如果一个清理已经t次没有运行,等等,则运行一个清理任务。您是否在互斥体上使用优先级继承?您描述

当前,在流程中定期启动低优先级的洗涤器任务。有时,由于锁争用,此低优先级任务可能会干扰其他高优先级任务。我希望在进程中的其他线程空闲锁定等待锁定/不运行状态时,有机会运行这种低优先级任务。我知道,一旦启动了这样的低优先级任务,其他高优先级任务可以很快开始运行,但是如果进程中的其他线程已经很忙,我希望避免运行这样的低优先级任务。

一个简单的方法是跟踪有多少线程正在等待一个任务,如果至少有x多个等待线程,并且如果一个清理已经t次没有运行,等等,则运行一个清理任务。

您是否在互斥体上使用优先级继承?您描述的情况听起来更像是优先级反转,而不是简单的互斥争用。