2009-06-24 8 views
7

ブーストスレッドをキャンセルすることはできますか?ブーストスレッドのキャンセル

ワーキングスレッドがクラッシュしても終了する簡単なウォッチドッグを書いていますが、ブーストスレッドライブラリのスレッドを単にキャンセルする方法はないようです。

答えて

10

キャンセルをサポートしていません。これは、すべてのやり方で微妙な問題が発生する可能性があるため、良いことです。

スレッド中断とboost :: thread_interrupted例外をカバーするdocsのセクションを見て、物事を整えながらあなたが望むことを達成できるようにするファッションを見てください。

+0

ブーストスレッドの中断は、スレッドがループに詰まった場合に役立ちません。これは、私が守りたいものの1つです。私が移植性をあきらめている間、私はpthreadクリーンナップハンドラを使うのが一番良いと思っています。 –

+3

または、ループのどこかに割り込みポイントを置きます。特にスレッドがすでに長時間実行されている場合は、パフォーマンスが大幅に低下してはいけません。そして、中断インフラストラクチャの残りの部分は既に導入されています。 – Duck

2

彼らは、私がスレッドを通知するboost::conditionを使用して検討したい(ダックで指摘したように)しかし、箱から出してキャンセルあなたのワーカースレッド(S)の内側で起こっ処理に応じてサポートしていません。それはできるだけ早く(きれいに)終わらなければならないということです。

関連する問題