当前位置:  开发笔记 > 编程语言 > 正文

杀死一个被阻止的Boost :: Thread

如何解决《杀死一个被阻止的Boost::Thread》经验,为你挑选了0个好方法。

我正在编写一个阻止两个输入的应用程序istreams.

从两者中读取istream是同步(阻塞)调用,因此,我决定创建两个Boost::threads来进行读取.

这些线程中的任何一个都可以到达"结束"(基于接收的一些输入),并且一旦达到"结束",两个输入流都停止接收.不幸的是,我不知道哪个会这样做.

因此,我不能join()在两个线程上,因为只有一个线程(不能预定哪一个)将实际返回(解除阻塞).

我必须以某种方式强迫对方退出,但它被阻止等待输入,所以它本身不能决定是时候返回(条件变量或什么不是).

他们是一种方式:

发送信号boost :: thread,或

强迫istream"失败",或

杀死Boost ::线程?

注意:

其中之一istreams就是cin

我正在尝试重新启动该过程,因此我无法以禁止重置它们的方式关闭输入流.

编辑:

我知道什么时候到达"结束",我知道哪个线程已成功完成,哪些线程需要被杀死.它是我需要弄清楚的杀戮(或者从istream中读取的不同策略).

我需要两个线程退出并正确清理:(

谢谢!

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有