我正在使用.NET(C#)。
如果我有2个线程运行T1和T2而T1是这样的:
while (true)
{
dosomething(); //this is a very fast operation
sleep(5 seconds);
}
同时T2正在做一些完全不同的事情,但有时它需要给T1一个踢,这样即使睡眠时间不到,它也会从睡眠中醒来。我该怎么做?
答案 0 :(得分:12)
使用WaitHandle,例如ManualResetEvent(或AutoResetEvent)。
在你的班级中,声明一个ManualResetEvent:
private ManualResetEvent myEvent = new ManualResetEvent(false);
线程1:
while(true) {
doSomething();
myEvent.WaitOne(5000);
myEvent.Reset();
}
线程2:
myEvent.Set();
Thread1将等待5秒或直到ManualResetEvent设置为止,以先到者为准。
编辑:在上面添加了AutoResetEvent
答案 1 :(得分:0)