我只是学习Java,我发现Java文档/书籍放在非常强调同步。我已经阅读了很多c#docs/books,并且你没有看到这个话题的重点。c#和java是否有相同的同步问题/概念?
请问C#手柄锁定/同步不同,或者说工作的事情不同的Web应用程序(应用程序池,IIS,CLR VERUS容器/ JVM/tomcat的)?
我只是学习Java,我发现Java文档/书籍放在非常强调同步。我已经阅读了很多c#docs/books,并且你没有看到这个话题的重点。c#和java是否有相同的同步问题/概念?
请问C#手柄锁定/同步不同,或者说工作的事情不同的Web应用程序(应用程序池,IIS,CLR VERUS容器/ JVM/tomcat的)?
lock
和大致相同,虽然它们的实现方式有些不同 - 特别是在C#中,lock只是调用Monitor.Enter/Exit的语法糖,而在Java中没有库的等价物。
C#不具有同步的方法,虽然可以使用[MethodImpl(MethodImplOptions.Synchronized)]
实现几乎相同的效果。 (我觉得有一些细微的差别,但他们大致相同。)我不建议在任何语言中使用这一点,但是 - 私人锁锁代替。在.NET和Java中的其他并发库支持进一步分离--Pettern.wait/notify/notifyAll和Monitor.Wait/Pulse/PulseAll的基本类似,但更高级别的支持是相当不同的。
的内存模型是微妙的不同 - 如果你不是想不锁定它们也非常接近的工作,但正确的无锁代码将在.NET和Java不同。
不太确定如何回答您的Web应用程序点...
实际上,C#确实有同步方法。 http://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.methodimploptions.aspx – SLaks 2010-01-14 13:51:36
不是在语言 - 有属性的支持,不可否认,但它不是语言的一部分。将编辑。 – 2010-01-14 13:52:14