C#相当于java的等待和通知?

时间:2008-10-16 16:16:56

标签: c# java multithreading

我知道你可以使用锁来锁定c#中的一个对象,但是你可以放弃锁定并等待别的东西通知你它已经像java那样改变了,并且有等待和通知吗?

在我看来,java和c#中的synchronized和lock分别是同义的。

2 个答案:

答案 0 :(得分:88)

等效功能(包括常规锁定)位于Monitor类中。

foo.notify() => Monitor.Pulse(foo)
foo.notifyAll() => Monitor.PulseAll(foo)
foo.wait() =>  Monitor.Wait(foo)

C#中的lock语句相当于使用适当的try / finally块调用Monitor.EnterMonitor.Exit

有关详细信息,请参阅my threading tutorialJoe Albahari's one

答案 1 :(得分:1)

我认为Wait Handles可能适合你。看看this是否有帮助。