there is also performance concerns. I remember once there was that code for a fractal or something that let you define how many threads it would use. 1 thread was very slow , 5-6 threads very fast but more threads actually made code slower and slower the more threads I was adding. And those were REAL threads (meaning the could take advantage of multiple cores = real concurency) , not greenlets as the ones used by pharo and python.�
So there is always a catch. Concurrency is known to cause headache with the exception of Clojure and Erlang both seem to make their users very happy with their concurrency features. But both of these languages were based on concurrency and not added it in as another feature to have. �These things are not easy to implement.�
I come from python , super popular language, tons of developer and loads of people complaining how concurrency is done.�