【发布时间】:2014-02-25 11:24:49
【问题描述】:
销毁可连接线程指针可能会遇到哪些问题? (即调用delete thread)提升参考有点模糊,更准确的答案是可取的。
这是一个具体的例子:
假设一个子线程卡在一个不可中断的系统调用上,例如
read(0),没有人操作键盘。因此,调用thread->interrupt()后跟thread->try_join_for()将使线程可连接。应该怎么做?
从参考指南来看,似乎必须分离线程或泄漏线程指针。当卡住的线程被分离或指针泄漏时实际发生的情况超出了这个问题的范围。
背景:
在boost::thread::~thread() 引用中是以下措辞。作为BOOST参考指南中的“她在海边卖贝壳”,需要阅读三四遍才能解析;
在其析构函数中隐式分离或加入 joinable() 线程可能导致仅在引发异常时遇到难以调试的正确性(分离)或性能(加入)错误。 因此程序员必须确保在线程仍可连接时永远不会执行析构函数。
这个(据我所知)的短处是(那个)它(是)一个(坏)想法(to)销毁(a)boost ::(线程)指针(而)它(是)仍然(可加入)。谁提出了提到的例外?子线程?析构函数?
【问题讨论】:
标签: c++ multithreading boost