(buffer n)
Returns a fixed buffer of size n. When full, puts will block/park.
user=> (def c (chan (buffer 3)))
#'user/c
user=> (go (<! (timeout 20000))
(println "Unblocking buffer")
(doseq [_ (range 2)]
(<! c)))
#<ManyToManyChannel clojure.core.async.impl.channels.ManyToManyChannel@5c350b54>
user=> (doseq [_ (range 5)] (println (>!! c true)))
true
true
true
Unblocking buffer
true
true
nil