我已经从java转移到C#并且对wait()和sleep()感到困惑.在java中,sleep不会删除对象的锁定,并且在睡眠完成后线程会重新开始工作,并且在等待的情况下,它会从对象中删除锁定并允许其他线程访问该对象一段时间.
在C#中也是如此,或者有任何差异?
是的,在C#中也是如此.在大多数情况下,Thread.sleep,Object.wait,Object.notify,Object.notifyAll在Java的紧密一致Thread.Sleep,Monitor.Wait,Monitor.Pulse,Monitor.PulseAll在.NET.
我希望在细节方面有一些差异,比如公平,但基础知识的工作方式相同.
但是,您应该很少在现代代码中使用这些低级抽象,无论是Java还是C# - 在Java中,使用更高级别的抽象java.util.concurrent,并且在.NET中尝试使用Task抽象(如果可以的话)(如果你在.NET 4).特别是,使用Task将为您准备C#5(和WinRT)中的异步盛宴.
| 归档时间: |
|
| 查看次数: |
196 次 |
| 最近记录: |