https://github.com/dar-clojure/async

core.async is heavily focused on CSP. While CSP itself might be a good 
idea, it's certainly not the case that every async problem is a CSP problem.
For example, you often use go block just because it allows to write 
non-blocking code in a regular linear fashion, not because it is a funky 
way to get values from channels. 
For such case channels are too heavy. When you have lots of async values 
coming from cache their impact on performance might be unacceptable.

dar.async <https://github.com/dar-clojure/async> provides just a go block 
without unnecessary features. 
The go block itself is taken as-is. However, channels are replaced with 
lightweight promises and dispatches to threadpool are removed from 
everywhere.
Go block runs synchronously (like a do block) until it hits the first async 
point. 
Then if the result is immediately available it just continues running in 
the current thread, 
otherwise the execution will be resumed on a thread that delivered result.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to