Re:Fearless Concurrency: Clojure, Rust, Pony, Erlang and Dart
by tombert on Monday February 25, 2019 @05:47PM
(#19250226)
Agents are run in a separate pool, and no one agent is processing at a time, so I suppose they're not "parallel", but concurrent still. I think the agents are preemptive, but I'm not 100% sure on that.
Re:Fearless Concurrency: Clojure, Rust, Pony, Erlang and Dart
by lastofus on Monday February 25, 2019 @08:44PM
(#19251326)
I found this comment enlightening: https://clojuredocs.org/clojure.core/send-off#example-593472...
It seems like there are a lot of parallels between agents and core.async.
Agents, like go blocks, run in a thread pool. Any blocking IO should be pushed off to a separate thread outside of the thread pool. In the case of agents, there is (send-off). In the case of core.async, there is (thread)
This is also a bit of a departure for people coming from Go or Erlang/Elixir.