【发布时间】:2008-10-16 16:16:55
【问题描述】:
我知道您可以在 c# 中使用 lock 锁定一个对象,但您可以放弃锁定并等待其他东西通知您它已更改,就像您在 java 中使用 wait 和 notify 一样?
在我看来,java 和 c# 中的 synchronized 和 lock 分别是同义词。
【问题讨论】:
标签: c# java multithreading
我知道您可以在 c# 中使用 lock 锁定一个对象,但您可以放弃锁定并等待其他东西通知您它已更改,就像您在 java 中使用 wait 和 notify 一样?
在我看来,java 和 c# 中的 synchronized 和 lock 分别是同义词。
【问题讨论】:
标签: c# java multithreading
等效功能(包括普通锁定)在Monitor 类中。
foo.notify() => Monitor.Pulse(foo)
foo.notifyAll() => Monitor.PulseAll(foo)
foo.wait() => Monitor.Wait(foo)
C# 中的 lock 语句等效于使用适当的 try/finally 块调用 Monitor.Enter 和 Monitor.Exit。
请参阅my threading tutorial 或Joe Albahari's one 了解更多详情。
【讨论】:
我认为等待句柄可能对你有用。看看this 是否有帮助。
【讨论】: