我有一个启动多个线程的进程,这些线程执行某些操作、监听某些端口等。
启动所有线程后,主线程当前进入死循环:
是这样的:
int main()
{
//start threads
while (true)
{
sleep(1000);
}
}
额外的 sleep
确保主线程不会吃掉处理器。
这个方法可以吗?是否有关于流程如何保持活跃的行业标准?谢谢。
编辑:一些说明:
- 线程是监听器,因此
join
或WaitForSingleObject
不是一个选项。通常我可以在这里使用 join,但线程是由第三方客户端库启动的,我无法控制它们。 - 从设计的角度来看,在主线程中进行一些处理是没有意义的。
最佳答案
.部分摘自 Linux Daemon Writing HOWTO ,我假设你想要这样的东西:
int main() {
pid_t pid;
/* Fork off the parent process */
pid = fork();
if (pid < 0) {
exit(EXIT_FAILURE);
}
/* If we got a good PID, then
we can exit the parent process. */
if (pid > 0) {
exit(EXIT_SUCCESS);
}
// now start threads & do the work
for( thread *t : threads ) {
join( t );
}
return 0;
}
这样主进程将退出,子进程将生成线程来完成工作。最后,子进程将在退出之前等待这些线程完成。
关于c++ - 如何保持进程运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10394986/