A fairly renowned approach in this area is OpenMP, a recently developed industry standard for shared memory programming on architectures with uniform memory access characteristics. OpenMP is rely on functional parallelism and focuses generally on the parallelisation of loops. OpenMP executions use a special compiler to calculate the annotations in the application's source code and to change the code into an explicitly parallel code, which can then be implemented. We shall have a detailed discussion on OpenMP in the next unit.
Shared memory approach gives low-level control of shared memory system, but they tend to be error prone and tedious. They are more suitable for system programming than to application programming.