main()返回时终止线程
C++11 Kill threads when main() returns?
我听说"一个现代的操作系统会在关闭进程时清理进程创建的所有线程",但是当我返回main()
时,我得到这些错误:
1)这个应用程序请求运行时以一种不寻常的方式终止它。请与应用程序支持团队联系以获取更多信息。
2)终止没有活动异常的调用
我的实现是这样的(我现在写的例子很抱歉实现不好):
void process(int id)
{
while(true) { std::this_thread::sleep_for(std::chrono::milliseconds(1); } }
}
int main()
{
std::thread thr1(process, 0);
std::thread thr2(process, 1);
//thr1.detach();
//thr2.detach();
return 0;
}
如果我取消注释detach();
s,没有问题,但我的处理线程将是套接字读取/写入器,它们将无限运行(直到main返回)。那么该如何应对呢?怎么了?
EDIT:也就是说,我不能一个接一个地分离()每个线程,因为它们不会正常终止(直到结束)。哦,再一次,如果我从DDOS窗口的X按钮关闭我的程序,(我的简单解决方案不工作在这种情况下)我的detach();函数被传递,因为程序被强制终止,这里又是错误:)
应用程序中发生的事情与操作系统可能做的事情无关。
如果std::thread
被破坏,仍然有一个可接合的线程,应用程序调用std::terminate
,这就是所显示的:http://en.cppreference.com/w/cpp/thread/thread/~thread '
对于c++11线程,如果你不关心它们的完成时间,你可以分离它们,或者你关心并且需要在线程对象被销毁之前连接它们。
相关文章:
- 如何安全地终止线程?(使用指针)C++
- 自终止线程.使用联接或分离
- 从c/c 中终止线程中的线程,而无需线柄
- 无法终止线程(错误 6)
- 定时与终止线程使用事件不一致
- C++ WinSock Recv 在接收 0 数据时终止线程而不是返回错误代码
- 立即终止线程
- 如何在C++11中终止线程
- 在 C++11 中从外部终止线程
- 错误地终止线程
- 终止线程后的清理
- 如何在Windows线程中终止线程后获取剩余线程数?C++
- 终止线程
- 分段错误,使用 pthread_exit() 终止线程时
- 可以终止线程从另一个进程终止线程
- 正在终止线程
- 如何知道何时终止线程
- C++:如何在没有特定"interruption points"的情况下干净地终止线程
- 强制终止线程C++win32
- 想要终止线程池一旦变量达到一定的值