私が間違っていなければ、c++0x スレッドをキャンセル可能にする簡単な方法はありません。GCancellableを c++0x スレッドと混合して使用することが合法かどうか疑問に思っています。
答えが
いいえ
私はglibスレッドを使用する必要があると思いますか、それともそれほど合法的ではありませんか?
私が間違っていなければ、c++0x スレッドをキャンセル可能にする簡単な方法はありません。GCancellableを c++0x スレッドと混合して使用することが合法かどうか疑問に思っています。
答えが
いいえ
私はglibスレッドを使用する必要があると思いますか、それともそれほど合法的ではありませんか?
私はあまり詳しくありませんGCancellable.
ざっと読んだ後、階層的な通知システムのようです。
その場合は、はい、簡単に混合できGCancellable
ますstd::thread
。
std::thread
キャンセル可能にする簡単な方法はありません。
これは間違っています。
std::thread
すべての s をキャンセル可能にするための非ゼロ コストの方法はありません。
正解です。
問題は一般的な解決策を提供することです。通知は簡単です。難しいのは、スレッドが通知を確認できるようにすることです。スレッドがミューテックスまたは IO でブロックされている可能性があります。スレッドを強制終了することはできません。あらゆる種類の悪いことが起こります。
個々の実装では、特定のニーズに合わせて独自のキャンセル システムを自由に実装できます。
ブロッキングミューテックスから割り込み可能にする必要がある場合は、timed_mutex のみを使用しg_cancellable_is_cancelled
、必要に応じてスレッドがキャンセルされるように頻繁に呼び出すようにしてください。
ブーストの中断可能なスレッドのようなものですか?
この側面は標準にはなりませんでしたが、誰かが public メソッドを呼び出した場合にスローする保護されたメソッドを提供するために派生させるstd::thread
ことができます。check_interrupted()
interrupt()
私は、Gnome のスレッド構造と混同する気にはなりません。価値があるというよりも、より多くのトラブルのように聞こえます。