1

私が間違っていなければ、c++0x スレッドをキャンセル可能にする簡単な方法はありません。GCancellableを c++0x スレッドと混合して使用することが合法かどうか疑問に思っています。

答えが

いいえ

私はglibスレッドを使用する必要があると思いますか、それともそれほど合法的ではありませんか?

4

2 に答える 2

3

私はあまり詳しくありませんGCancellable. ざっと読んだ後、階層的な通知システムのようです。

その場合は、はい、簡単に混合できGCancellableますstd::thread


std::threadキャンセル可能にする簡単な方法はありません。

これは間違っています。

std::threadすべての s をキャンセル可能にするための非ゼロ コストの方法はありません。

正解です。

問題は一般的な解決策を提供することです。通知は簡単です。難しいのは、スレッドが通知を確認できるようにすることです。スレッドがミューテックスまたは IO でブロックされている可能性があります。スレッドを強制終了することはできません。あらゆる種類の悪いことが起こります。

個々の実装では、特定のニーズに合わせて独自のキャンセル システムを自由に実装できます。

ブロッキングミューテックスから割り込み可能にする必要がある場合は、timed_mutex のみを使用しg_cancellable_is_cancelled、必要に応じてスレッドがキャンセルされるように頻繁に呼び出すようにしてください。

于 2011-09-21T15:08:34.273 に答える
0

ブーストの中断可能なスレッドのようなものですか?

この側面は標準にはなりませんでしたが、誰かが public メソッドを呼び出した場合にスローする保護されたメソッドを提供するために派生させるstd::threadことができます。check_interrupted()interrupt()

私は、Gnome のスレッド構造と混同する気にはなりません。価値があるというよりも、より多くのトラブルのように聞こえます。

于 2011-09-21T11:24:06.567 に答える