c#和java是否具有相同的同步问题/概念?

mrb*_*lah 1 c# java synchronization

我刚刚学习Java,我发现Java文档/书籍非常强调同步.我已经阅读了很多c#docs/books,你只是没有看到那么多强调这个主题.

c#是否以不同方式处理锁定/同步,或者作为Web应用程序(应用程序池,iis,clr verus容器/ jvm/tomcat)执行不同的操作?

Jon*_*eet 7

lock并且synchronized大致相同,虽然它们的实现方式有所不同 - 特别是在C#中锁定只是用于调用Monitor.Enter/Exit的语法糖,而在Java中则没有相应的库.

C#没有同步方法,尽管你可以使用它[MethodImpl(MethodImplOptions.Synchronized)]来达到同样的效果.(我认为存在一些微妙的差异,但它们大致相同.)我不建议在任何一种语言中使用它,但是 - 锁定私有锁.

.NET和Java中的另一个并发库支持更加分离 - Object.wait/notify/notifyAll和Monitor.Wait/Pulse/PulseAll的原语相似,但更高级别的支持是相当不同的.

内存模型略有不同 - 如果你没有尝试在没有锁定的情况下工作,它们就足够接近,但正确的无锁代码在.NET和Java中会有所不同.

不确定如何回答您的Web应用程序点...