AutoResetEventを調べてみた。
スレッド処理の中に良く見かけるAutoResetEvent・・・
シグナル、非シグナル?なんだそれ?というレベルの人が調べてみました。 AutoResetEventはスレッドと同期をとりながら処理するときに使用します。 このオブジェクトは「シグナル状態」と「非シグナル状態」の2つの状態を持ちます。 シグナルというのはスレッドの処理を中断/再開させるオブジェクトです。 このオブジェクトの状態がシグナルのときは処理を中断させませんが、 非シグナルのときは処理を中断させます。処理を再開させたい場合は オブジェクトの状態をシグナルにします。 同期イベントにはAutoResetEventとManualResetEventの2種類あります。 AutoResetEventは1つのスレッドの中断を再開させると自動で「シグナル状態」→ 「非シグナル状態」にします。そのため、他のスレッドは中断状態のままです。 上の例でいくとスレッド4は処理を再開するが、スレッド1~3は中断状態のままです。 テストコード
|