In response to a recent post, less focus on threads and more focus on tasks, Gastón C. Hillar writes that he agrees that decomposing the job to be done into many tasks is the key to a successfully parallelized algorithm.
Once you have the most important tasks, you can re-design the algorithm taking into account that you must exploit parallel architectures. Of course, you must understand how threads work and how modern multi-core microprocessors work. Then, you can use tools like a Gantt chart (yes, a Gantt chart) to find the critical sections (those areas where parallelization is extremely difficult or nearly impossible). Hillar shows a simple example taking into one of the new features offered by future .Net 4.0 Parallel Extension.


