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

标签 c linux multithreading

目前在一个进程中周期性地启动一个低优先级的洗涤器任务。有时由于锁争用,这个低优先级任务会干扰其他高优先级任务。我想在进程中的其他线程空闲时(阻塞等待锁定/未运行状态)机会性地运行这种低优先级任务。我知道一旦这样的低优先级任务启动,其他高优先级任务很快就会开始运行,但是如果进程中的其他线程已经很忙,我希望避免运行这样的低优先级任务。

最佳答案

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

关于c - Linux:如何以编程方式检测进程中的空闲线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20308436/

相关文章:

multithreading - 为什么 std::condition_variable::wait 需要互斥锁?

c - malloc 需要 sizeof 运算符吗?

c - 如何从文件中读取字符直到一个空格并将其存储为一个字符串(c)?

c - Makefile 与 obj 文件不匹配

java - 安装 Apache Tomcat

java - 无法将独立的 JBoss AS7 实例配置为可从外部网络访问

multithreading - Delphi:通过报告锁定 "failure"上正在运行的线程的调用堆栈来调试关键部分挂起

python - 带有 'with' 语句的非阻塞锁

在c中创建具有不同子进程的n父进程

mysql - 在 centOS 上安装 mysql 总是返回错误的 root 凭据