We know that all processors share a common memory in shared memory model. Every processor, however, can be assigned a different part of the program stored in the memory to implement with the data stored in specified locations. Every processor does computation independently with the data allocated to them by the controlling program, called the main program. After completion their computations, all of these processors join the main program. The main program complete only after all child processes have been terminated completely. There are many alternatives to execute these ideas through high level programming. Some of them are:
i) Using heavy weight processes.
ii) Using threads.( e.g. Pthreads).
iii) Using a completely new programming language for parallel programming (e.g. Ada)
iv) Using library routines with an existing sequential programming language.
v) Modifying the syntax of an existing sequential programming language to produce a parallel programming language (e.g. UPC).
vi) Using an existing sequential programming language improves with the compiler directives for specifying parallelism (e.g. OpenMP).
We shall adopt the final alternative. We shall also give an introduction to the shared programming using library routines with an existing sequential programming language.