c++ - 如何暂停所有线程的恢复?

标签 c++ multithreading cpu-usage resume pause

我的用例:A 进程 -> 请求暂停/恢复(通过 IPC) -> B 进程

我的目的是当B进程在后台时节省B进程的CPU使用率。 因为B进程的所有线程都在消耗CPU使用率。 所以我想在需要时暂停/重启 B 进程的所有线程。

Q1) 如何暂停/恢复 B 进程中的所有线程?

以下只是我的第一个想法,但我不确定这是解决这种情况的好方法。

如果您对此有好的解决方案,请告诉我您的建议。

<main thread of B process>
while(1)
{
 mCondition.wait(lock);
 //all thread are create & run in here
}

<handler thread of  B process>
if(request resume)
 mCondition.notify_one();
else
 //terminate all thread of B process

=> 这个想法是一种终止所有线程并重新创建所有线程的方法。

最佳答案

在 POSIX 平台上,您可以简单地kill(targetPid, SIG{STOP,CONT}) 目标进程,它会暂停/恢复它的所有线程。

关于c++ - 如何暂停所有线程的恢复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54750678/

相关文章:

c++ - QMediaPlayer 给我有关视频的错误信息

c++ - 在 C++ 中声明大小之前的数组分配中 * 是什么意思?

python - 如何使用 Python 多处理库在进程完成时请求新任务?

.net - 线程的垃圾收集

mysql cpu使用率超过系统cpu

c++ - 使用 C++ 在 Windows 中检索 CPU 负载百分比总数

c++ - 什么是大括号或等于初始值设定项?

c++ - 无法使用 crfsuite 的 C++ API 编译一个非常简单的 Tagger 示例

单独线程上的 C# UI

c++ - 我如何才能知道是否在最大水平上使用我的所有核心