共享变量和通道之间的区别
Difference between a shared variable and a channel
除了促进进程之间的通信之外,使用通道与使用某种形式的共享状态(例如原子)有何不同?
它们非常不同:
原子是一个值的包装器,因此未来的值由函数应用程序派生(并且可选地,您可以传递验证函数)。来自 Clojure reference pages:“Atom 是一种表示某些状态的有效方式,这些状态永远不需要与任何其他状态协调,并且您希望对其进行同步更改”。
在一次使用传送带类比描述它们的演讲中介绍了通道:您将一些东西放在一端,它们到达消费者端。有的话可以去频道里拿东西(或者等到有东西来)。
您可以使用原子中的序列作为通道的替代品,但这将是一个糟糕的替代品,很可能需要消费者如何排队、消费、等等
除了促进进程之间的通信之外,使用通道与使用某种形式的共享状态(例如原子)有何不同?
它们非常不同:
原子是一个值的包装器,因此未来的值由函数应用程序派生(并且可选地,您可以传递验证函数)。来自 Clojure reference pages:“Atom 是一种表示某些状态的有效方式,这些状态永远不需要与任何其他状态协调,并且您希望对其进行同步更改”。
在一次使用传送带类比描述它们的演讲中介绍了通道:您将一些东西放在一端,它们到达消费者端。有的话可以去频道里拿东西(或者等到有东西来)。
您可以使用原子中的序列作为通道的替代品,但这将是一个糟糕的替代品,很可能需要消费者如何排队、消费、等等