2010-01-14 81 views
1

我只是学习Java,我发现Java文档/书籍放在非常强调同步。我已经阅读了很多c#docs/books,并且你没有看到这个话题的重点。c#和java是否有相同的同步问题/概念?

请问C#手柄锁定/同步不同,或者说工作的事情不同的Web应用程序(应用程序池,IIS,CLR VERUS容器/ JVM/tomcat的)?

回答

7

lock和​​大致相同,虽然它们的实现方式有些不同 - 特别是在C#中,lock只是调用Monitor.Enter/Exit的语法糖,而在Java中没有库的等价物。

C#不具有同步的方法,虽然可以使用[MethodImpl(MethodImplOptions.Synchronized)]实现几乎相同的效果。 (我觉得有一些细微的差别,但他们大致相同。)我不建议在任何语言中使用这一点,但是 - 私人锁锁代替。在.NET和Java中的其他并发库支持进一步分离--Pettern.wait/notify/notifyAll和Monitor.Wait/Pulse/PulseAll的基本类似,但更高级别的支持是相当不同的。

的内存模型是微妙的不同 - 如果你不是想不锁定它们也非常接近的工作,但正确的无锁代码将在.NET和Java不同。

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

+0

实际上,C#确实有同步方法。 http://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.methodimploptions.aspx – SLaks 2010-01-14 13:51:36

+0

不是在语言 - 有属性的支持,不可否认,但它不是语言的一部分。将编辑。 – 2010-01-14 13:52:14