I first touched parallel processing as an undergrad. I was selected to for a summer research program that tackled different aspects of parallel processing using transputers. They broke us into teams and I was put on the parallel debugging team. I missed the sign over the door that read, All hope abandon ye who enter here. My love and hate for parallelism began.
I actually have enjoyed parallelism over the years before it became mainstream. But, for all its intellectual challenge, it’s a pain in hindquarters because the traditional approaches of locks and semaphores makes coding a nightmare one you get past a quickly-reached complexity threshold.
One solution to that has been to use message-passing paradigms, but this has traditionally brought impractical and/or expensive “solutions” to the table.
I’ve been playing with ØMQ (ZeroMQ) because of its powerful sockets. But, I’m already intrigued by its potential power as a parallel-processing messaging system. The white paper Multithreading Magic reviews the problems of parallelism (all of which I’ve encountered) and makes the statement, Most ØMQ users come for the messaging and stay for the easy multithreading.
I’m skeptical of silver bullets, and it may not be fair to call ØMQ a silver bullet, but I have to agree that ØMQ’s simple and powerful tools make the intra-process message-passing paradigm very attractive so far. We’ll see how things go.