Concurrency and Distribution in computing
With the advent of multithreading, concurrent processing is now available to application programmers. And synchronization of shared object is more prevalent than it used to be. A shared object is an object which can be modified and or accessed simultaneously by more than one thread of execution. Often you will see books, blogs, articles, and discussions about serialized and synchronized accesses to those shared objects. And there are a few general patterns to attack those serialization and synchronization problems.
Any software engineering and computer science course arms people with the weapons necessary to tackle those situations. But where can we build the intuition. For example, we all know if one queue of customers in a bank is serverd by ( say ) three tellers, it is better than three queues independently served by three tellers.
Here comes the subject of Operations research. It is a very vast branch of Applied Math, but I still don't understand why computer science curriculum does not have the basics like PERT/CPM and scheduling etc. from that aspect. This is where one can think parallel processing. Once this lively topics are taught, I think the parallel programming would become more friendly to uninitiated.
This will also give a very good idea to partition a problem for parallel processing. Once this is understood and intuitively obvious, the distribution and distributive computing becomes just the next step.
Reader Comments