【发布时间】:2016-01-23 14:30:33
【问题描述】:
我有一个 std::thread 正在等待并从套接字读取。并且有一个指向此thread 的指针存储在某处。但是当发生不好的事情并且thread 结束时,我希望它调用一些导致加入该线程的函数,然后删除引用它的指针。 (我可以从线程内访问该指针)
我可以在另一个线程中执行此操作,但新线程成为问题。
【问题讨论】:
-
Join 必须发生在启动线程中。这意味着 那个 线程需要一个事件处理程序。你的启动线程有什么事件机制吗?
-
如何通知启动线程该线程已结束?
-
@Farzam 不管你想要什么,没有“一个正确的方法”。最简单的方法可能是受互斥体保护的布尔值。
-
'当坏事发生时' - 比如什么?为什么线程必须“结束”?如果有异常,你可以用通常的方式捕捉它。
-
@MartinJames 当套接字关闭时线程可以结束。
标签: c++ multithreading c++11 boost-thread stdthread