【发布时间】:2011-04-29 21:37:21
【问题描述】:
至少有三种众所周知的创建并发应用程序的方法:
通过锁定(.NET、Java)实现多线程和内存同步。软件事务内存 (link text) 是另一种同步方法。
异步消息传递(Erlang)。
我想了解是否有其他方法,并讨论这些方法应用于大型分布式应用程序的各种优缺点。我的主要关注点是简化程序员的生活。
例如,在我看来,当它们之间没有依赖关系时,使用多个线程很容易,这非常罕见。在所有其他情况下,线程同步代码变得非常麻烦并且难以调试和推理。
【问题讨论】:
-
在您的列表中再添加一项:软件事务内存 (en.wikipedia.org/wiki/Software_transactional_memory)。还有一个 Java 版本可用:multiverse.codehaus.org
-
作为子项添加到 1)。它看起来不像是编写并发应用程序的概念上的新方法,而是锁定结构的替代方案。
-
@Serge:我不确定我明白为什么它在概念上与消息传递的不同。
-
@Neeme:同样是 STM,参见 DeuceSTM sites.google.com/site/deucestm。
-
@jalf:我只是看不出它会如何以任何剧烈的方式改变应用程序架构。它仍然依赖于线程和内存同步。我不确定事务语义是否比锁更容易使用共享状态。就个人而言,我对试图避免共享状态的概念非常感兴趣。
标签: java .net concurrency erlang