根据 C++0x 最终草案,无法请求线程终止。也就是说,如果需要,我们需要实施一个 DIY 解决方案。
另一方面,boost::thread 提供了一种中断线程的机制。safe方式。
您认为最好的解决方案是什么?设计自己的协作“中断机制”还是采用本地化?
所有语言规范都表明该支持并未内置于该语言中。boost::thread::interrupt
还需要线程函数的一些支持:
当被中断的线程下一次执行指定的中断点之一时(或者当前在执行一个中断点时被阻塞)
即,当线程函数不给调用者一个中断的机会时,你仍然被卡住。
我不确定你所说的“本地化”是什么意思 - 没有本地支持,除非你着迷boost:threads
.
尽管如此,我还是会使用显式机制。无论如何,你必须考虑有足够的中断点,为什么不将它们明确化呢?根据我的经验,额外的代码通常是微不足道的,尽管您可能需要将一些等待从单对象更改为多对象,这(取决于您的库)可能看起来更难看。
人们还可以提出“不要使用控制流异常”,但与搞乱线程相比,这只是一个指导方针。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)