我的用例: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})
目标进程,它将暂停/恢复其所有线程。