【发布时间】:2016-05-17 16:11:37
【问题描述】:
我最近正在使用 C++11 中的线程。现在我正在考虑如何强制停止线程。我在stackoverflow上找不到,也试过这些。
- 每个线程一个变量:不太可靠
- 在主线程中返回:我必须强制退出一个而不是全部
我没有更多的想法。我听说过 WinAPI,但我想要一个可移植的解决方案。 (这也意味着我不会使用 fork())
你能给我一个解决方案吗?我真的很想做。
【问题讨论】:
-
你的线程模型是什么?除非线程合作,否则 C++ 不提供任何强制关闭线程的方法。
-
没有。强制线程干净地停止是不可能的。有时有特定于平台的方法可以做到这一点,但它们总是不受欢迎,因为它们很危险。如果您在分配内存的过程中停止线程并破坏全局堆怎么办?如果你在它持有锁时停止它怎么办?等等。多线程需要精心设计。
-
至少我可以使用互斥锁,不是吗?
-
你将如何使用互斥锁?如果您解释了您的潜在问题,我们可能会提供更多帮助。 :-)
-
这不是一个真正的 C++ 问题。几乎可以肯定,您可以在平台 API 中对线程执行的任何操作都是 C 函数。
标签: c++ multithreading c++11