共享变量和通道之间的区别

时间:2020-04-15 17:51:47

标签: clojure clojurescript

除了促进进程之间的通信外,使用通道与使用某种形式的共享状态(例如原子)有何不同?

1 个答案:

答案 0 :(得分:2)

它们非常不同:

  • 原子是值的包装,以便将来的值由函数应用程序派生(还可以通过验证函数)。摘自Clojure reference pages:“ 原子是表示某些状态的有效方法,这些状态永远不需要彼此协调,并且您希望对其进行同步更改。”

  • 通道是在一个演讲中介绍的,该通道使用传送带类比来描述它们:将一些东西放在一端,它们到达消费者端。如果频道上有东西,您可以去那里拿东西(或等到一个物品到达为止)。

可以将原子中的序列用作通道的替代物,但这将是一个较差的替代品,最有可能要求消费者了解如何排队,消费等。