c++ - 如何知道何时终止线程?

标签 c++ multithreading

我正在设计线程库。到目前为止,我有一个初始化库的方法,一个创建线程的方法,一个将当前线程交给就绪线程队列中的下一个线程的方法。

在我继续为线程实现信号量之前,我认为我可能应该在线程完成后立即终止线程并释放分配给它们的内存,但我不知道该怎么做。如何判断线程何时“完成”?

最佳答案

您不只是安全或可靠地终止线程——让它们自然退出(当它们返回时)。

虽然系统提供了一种终止线程的方法,但几乎所有 C++ 程序在继续运行时都可能会出现未定义的行为。您可以想象这样的情况:可以 完成杀戮而没有副作用(对程序的其余部分),但该程序与惯用的 C++ 完全不同。这样的程序将非常奇特,有许多不寻常和严格的限制。

当您想知道线程何时退出时,可以在它退出之前添加一些清理以跟踪其状态。

当您希望能够(自然地)请求线程退出时,请考虑运行循环和消息。

关于c++ - 如何知道何时终止线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9440381/

相关文章:

c++ - 数组字符串转换时出现段错误

连接到 Qt 信号的 Python lambda 函数在不同线程中创建时不会运行

android - Android : multithread a concern? 中的 HashMap、SparseArray

java - 垃圾收集正在减慢我的应用程序的运行速度?

java - 在后台使用 JAVA 计时器,不会导致 UI 出现任何延迟

c++ - 通过引用返回一个新对象

javascript - 任何提供可调 dpi、可选文本和 CSS 支持的 HTML 到 PDF 渲染器?

c++ - wxWidgets + Windows 上的 Cygwin

c++ - 类模板中可见的友元函数名称

multithreading - Tomcat 7 异步处理