You have to copy memory before sharing it between threads.
You cannot do atomic memory sharing between threads = threads cannot work on the same task at the "same" time efficiently.
You cannot do atomic memory sharing between threads = threads cannot work on the same task at the "same" time efficiently.
Sometimes you can also reformulate the problem, but yes not all problems fit.
I would add though that whenever you want to write orchestration around that parallel work it's much easier in erlang than the alternatives.