Разница между общей переменной и каналом - PullRequest
0 голосов
/ 15 апреля 2020

Помимо облегчения связи между процессами, чем отличается использование канала от использования какой-либо формы общего состояния, например, атома?

1 Ответ

2 голосов
/ 16 апреля 2020

Они очень разные:

  • Атом - это обертка вокруг значения, так что будущие значения выводятся приложением функции (и, при желании, вы можете передать функцию проверки). Из справочных страниц Clojure : " Атомы - это эффективный способ представления некоторого состояния, которое никогда не нужно будет координировать с любым другим, и для которого вы будете sh делать синхронные изменения".

  • Каналы были представлены в докладе, который описывал их, используя аналогию с конвейерной лентой: вы кладете некоторые вещи на один конец, они приходят на потребительский конец. Вы можете go и захватить что-нибудь из канала, если на нем что-то есть (или подождать, пока товар не прибудет).

Вы можете использовать последовательность в атом как замена канала, но это будет плохая замена, скорее всего потребует от потребителей того, как ставить в очередь, потреблять и т. д. c.

...