并发编程技术,优点,缺点

2022-09-02 04:36:05

创建并发应用程序至少有三种众所周知的方法:

  1. 通过锁定(.NET,Java)进行多线程和内存同步。软件事务内存(链接文本)是另一种同步方法。

  2. 异步消息传递(Erlang)。

我想了解是否有其他方法,并讨论这些方法应用于大型分布式应用程序的各种优缺点。我的主要重点是简化程序员的生活。

例如,在我看来,当它们之间没有依赖关系时,使用多个线程很容易,这是非常罕见的。在所有其他情况下,线程同步代码变得非常繁琐,难以调试和推理。


答案 1

我强烈建议你看看Rich Hickey的这个演讲。它描述了一种构建高性能并发应用程序的方法,我认为这与基于锁或消息传递的设计不同。

基本上,它强调:

  • 免锁定的多线程并发应用程序
  • 不可变的持久性数据结构
  • 由软件事务性内存处理的状态更改

并讨论了这些原则如何影响Clojure语言的设计。


答案 2

阅读Herb Sutter“有效并发”专栏,你也会受到启发。


推荐