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

标签 c# java synchronization

我刚刚学习 Java,我发现 Java 文档/书籍非常强调同步。我已经阅读了相当多的 c# 文档/书籍,但您只是看不到对这个主题的重视程度。

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

最佳答案

locksynchronized 大致相同,尽管它们的实现方式有所不同 - 特别是,在 C# 中,lock 只是调用 Monitor.Enter/的语法糖退出,而在 Java 中没有等效的库。

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

.NET 和 Java 中的其他并发库支持相去甚远 - Object.wait/notify/notifyAll 和 Monitor.Wait/Pulse/PulseAll 的原语相似,但更高级别的支持相当不同。

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

不太确定如何回答您的网络应用问题...

关于c# - c# 和 java 是否有相同的同步问题/概念?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2064432/

相关文章:

database - 如何同步两个 Oracle 数据库?

c# - 如何检测行首,或 : "The name ' getCharPositionInLine' does not exist in the current context"

c# - 生成序列的可读单元测试?

c# - ARKit 中是否公开了 pnp 求解器,或者如何使用 EmguCV c# 包装器在 Unity3D 项目中使用 opencv 的 SolvePnP 函数

java - Hibernate实体生成奇怪的sql并尝试保存重复的条目

java - Bit.ShiftRight - 在 Java 中等效

java - 如何在Java中将XML内容写入字符串?

mysql - 符合增量同步条件的数据库模式

c# - MVC4 使用 linq to sql 返回存储过程输出

ios - 使用 Firebase 与企业数据库进行离线数据同步