By Andrew Binstock, Dr. Dobbs
The advent of the many-core era is not going to push developers to write more parallel code. That hasn’t happened as we’ve gone from 1- to 2- to 4- to 8-core processors, has it? Writing parallel code is not the problem. So, let’s stop trying to fix it.
Much of my programming life these last 15 years has explored fine-grained parallelism; that is, the use of parallel threads within the same program. I coauthored one of the first books on the topic for Intel Press, in which I carefully explained the traditional techniques of mutual exclusion. I even drilled into the then-novel concept of OpenMP as a way of simplifying the burdensome work of getting concurrency right. Since then, I’ve explored actors. And I’m currently toying with the concepts of channels in Google’s Go language. Had I the time and the inclination, I could have strolled into Cilk, Intel’s OpenMP-like syntax for concurrency or thrown myself into numerous other concurrency options.