.NET(C#)を使用しています。
T1とT2を実行している2つのスレッドがあり、T1は次のようになります。
while (true)
{
dosomething(); //this is a very fast operation
sleep(5 seconds);
}
同時に、T2はまったく異なることをしていますが、睡眠時間が経過していなくても、T1が睡眠から目覚めるようにキックを与える必要があります。どうすればよいですか?
.NET(C#)を使用しています。
T1とT2を実行している2つのスレッドがあり、T1は次のようになります。
while (true)
{
dosomething(); //this is a very fast operation
sleep(5 seconds);
}
同時に、T2はまったく異なることをしていますが、睡眠時間が経過していなくても、T1が睡眠から目覚めるようにキックを与える必要があります。どうすればよいですか?
ManualResetEvent(またはAutoResetEvent )のようなWaitHandleを使用します。
クラスで、ManualResetEventを宣言します。
private ManualResetEvent myEvent = new ManualResetEvent(false);
スレッド1:
while(true) {
doSomething();
myEvent.WaitOne(5000);
myEvent.Reset();
}
スレッド2:
myEvent.Set();
Thread1は、5秒間、またはManualResetEventが設定されるまでのいずれか早い方で待機します。
編集:上記のAutoResetEventを追加