在C ++ 11中分离线程

时间:2017-09-07 09:16:59

标签: multithreading c++11 concurrency

我想从进程启动一个线程并将其分离并终止该进程。但该线程将在后台持续运行。我可以用c ++ 11实现这个目标吗?

我已经脱离了这样的线程 std :: thread(& thread_func,param1,param2).detach();

但是一旦进程终止,它就会被终止。

1 个答案:

答案 0 :(得分:2)

分离与在后台运行不同。如果您分离一个线程,那么您只需告诉操作系统“我不想在退出后手动加入该线程,请为我处理”。但是,当主进程退出时,操作系统通常会终止所有子线程/进程。

所以你想要的是运行一个守护神。然而,将进程转换为deamon(请注意,您无法守护线程)取决于操作系统。在linux上你可以调用daemon函数:

http://man7.org/linux/man-pages/man3/daemon.3.html

我不知道如何在Windows或其他操作系统上执行此操作。您也可以阅读:

Creating a daemon in Linux