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

标签 c# java multithreading

我知道您可以在 c# 中使用 lock 锁定一个对象,但您可以放弃锁定并等待其他东西通知您它已更改,就像在 java 中使用 wait 和 notify 一样?

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

最佳答案

等效功能(包括普通锁定)在Monitor 中。类(class)。

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

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

my threading tutorialJoe Albahari's one了解更多详情。

关于C#相当于java的等待和通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/209281/

相关文章:

java - Java是如何实现锁的

c# - 为什么我们需要 Thread.MemoryBarrier()?

c# - 使用委托(delegate)在程序类中找不到在不同类中定义的方法

c# - 结合单元测试(模拟)和依赖注入(inject)框架

c# - 通用 WCF 代理实现

java - 是否有一个框架可以测试 Swing 元素的特定参数?

c++ - 在 C++11 中处理互斥

c# - 通过方法传入类型时如何使用 'is'?

java - 在 Java 中重复一个字符串——类似于 Python 的一行简单性

java - Java.Util.Calendar 值的任意分配