Multicore community





Microsoft Forums

Intel's Forum

Intel's Multicore Community



Intel Multicore

NVidia Multicore GPU



.Net Parallel Extensions

Intel's TBB




AsyncOp Logger

Intel thread analysis

Intel VTune



Asaf Shelly























2 / 2

Multiprocessing Traps & Pitfalls

Designing parallelized systems has more to do with management than with programming. It is often very difficult for developers to move from a single task application to a multitask application. This transition requires a fundamental change in way developers think, the same way as moving from flat code C programming to OOP C++ programming.

Parallel computing is about management of shared resources.

  Sequential processing  

When we try to learn about Multiprocessing and Parallel Computing we find many living examples that have been there long before we ever thought about Multicore CPUs. Following are some of the common examples.

  Synchronization API  

In this section we go over the common API used for synchronization. Not all API are available on all operating systems and libraries. The section covers the majority of common API as a general concept with little reference to specific library implementation and parameters.


Systems today define the basic unit of execution as a Thread. In other words today we represent a Task in the system by using a thread. Based on this every process is considered to be a type of thread or containing an initial thread because a process is a Task Domain that has its private copy of computer memory, system handles, and devices. A process also starts with an initial Task. If the process is a type of thread then the application will end when this thread exits. If the process is a container of threads then the application will end after the last thread exits.

  Thread Cleanup  

A thread is a system object and as such it has to be destroyed. An object has to perform cleanup upon destruction.