If you want to make programs go faster on parallel hardware,
then you need some kind of concurrency. Right? In this article
I’d like to explain why the above statement is false, and why we
should be very clear about the distinction between concurrency
and parallelism. I should stress that these ideas are not mine,
and are by no means new, but I think it’s important that this
issue is well understood if we’re to find a way to enable
everyday programmers to use multicore CPUs. I was moved to write
about this after reading Tim Bray’s articles on Concur.next:
while I agree with a lot of what’s said there, particularly
statements like Exposing real pre-emptive threading with shared
mutable data structures to application programmers is wrong it
seems that parallelism and concurrency are still being
conflated. Yes we need concurrency in our languages, but if all
we want to do is make programs run faster on a multicore,
concurrency should be a last resort. First, I’ll try to
establish the terminology. A concurrent pr