News for hackers. Stuff that matters.
Re:Fearless Concurrency: Clojure, Rust, Pony, Erlang and Dart by lastofus on Monday February 25, 2019 @02:27PM (#19248574)
I believe all I/O is blocking unless you use something that wraps NIO. This is definitely true for core.async threads, but I'm not sure why it would any different for agents.

This is also a bit of a departure for people coming from Go or Erlang/Elixir.

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)