I'm a little confused with core.async, when you attach a transducer to a channel or when you use pipeline, where does the computation happen? And so how does the concurrency work? Normally I think of each go-block as a unit of concurrency, so if I have 4 go-block I've got 4 concurrent processes running. But with a transducer on a channel I'm a bit confused.
Same thing with pipeline, it has the parallelization setting, what happens under the hood? Does it create new threads or does it dispatch to the go thread pool?
the transducer may be applied by either the producer or the consumer thread of the channel (it depends)
pipeline creates its own thread pool