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

2022-08-31 16:56:47

我知道你可以使用lock在c#中锁定一个对象,但是你能放弃锁定并等待其他东西来通知你它已经改变了,就像你在Java中等待和通知一样吗?

在我看来,在java和c#中分别同步和锁定是同义词。


答案 1

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

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

C# 中的语句等效于调用并具有适当的 try/finally 块。lockMonitor.EnterMonitor.Exit

有关更多详细信息,请参阅我的线程教程Joe Albahari的线程教程。


答案 2

我认为等待手柄可能适合您。看看这是否有帮助。