【问题标题】:How to detach a thread on Windows C++如何在 Windows C++ 上分离线程
【发布时间】:2012-10-05 10:28:48
【问题描述】:

如何在C++ 中分离窗口上的线程。在Posix 我们有pthread_detach(pthread_self());。如何在 windows 环境中实现这一点。

【问题讨论】:

  • 在这方面,pthread 的 windows 实现是否与 *nix 不同?
  • 我想说“DeleteFiber”,但试图记住可能不存在的等价物是在逃避我。有关该主题的更多信息,但这里是 MSDN 在线程上的链接:msdn.microsoft.com/en-us/library/windows/desktop/…
  • std::thread::detach() 有什么问题?
  • 分离是什么意思?如果是关于强制线程停止运行指令,请删除它的堆栈和寄存器集——TerminateThread 是答案或 1std::thread::detach()`。
  • @Apokal TerminateThread,嗯,终止一个线程,绝对与分离线程相同。分离更多的是说你并不真正关心线程资源,并希望在线程自然完成后自动清理它,但不需要显式加入它。

标签: c++ windows multithreading


【解决方案1】:

假设您使用_beginthreadexCreateThread创建线程,您只需使用CloseHandle关闭线程句柄即可。

【讨论】:

  • 当我看到这个答案时,我有点不安,因为我希望 Close 也会终止线程。不过,MSDN 中的这段话让事情变得清晰:'关闭线程句柄并不会终止关联的线程或删除线程对象。 (...) 要删除线程对象,您必须终止线程,然后关闭该线程的所有句柄。'
猜你喜欢
  • 2021-05-19
  • 1970-01-01
  • 1970-01-01
  • 2013-08-28
  • 1970-01-01
  • 2019-02-26
  • 2021-05-19
  • 1970-01-01
  • 2021-02-14
相关资源
最近更新 更多