- Partition the workload into smaller items
- Map these onto processors or machines
- Communicate between these subtasks
- Synchronize between subtasks as required
Even with the use of toolkits that offer communication and synchronization primitives (such as PMI) parallel programming is a bit like rocket science. Without a shift in programming model parallel programming will stay elusive. Programmers will have to deal with parallelism to some degree at least – they can no longer rely on middleware, databases and operating systems to exploit parallelism.
- Actor Model: Dispatching and scheduling instead of direct invocation Queues and asynchronous interactions
- RESTful interactions Message passing instead of function calls or shared memory
- Eventual consistency instead of ACID