27.2.3.2. OpenMP
GCC implements the OpenMP threading implementation: https://stackoverflow.com/questions/3949901/pthreads-vs-openmp
Example: userland/gcc/openmp.c
The implementation is built into GCC itself. It is enabled at GCC compile time by BR2_GCC_ENABLE_OPENMP=y
on Buildroot, and at program compile time by -fopenmp
.
It seems to be easier to use for compute parallelism and more language agnostic than POSIX threads.
pthreads are more versatile though and allow for a superset of OpenMP.
The implementation lives under libgomp
in the GCC tree, and is documented at: https://gcc.gnu.org/onlinedocs/libgomp/
strace
shows that OpenMP makes clone()
syscalls in Linux. TODO: does it actually call pthread_
functions, or does it make syscalls directly? Or in other words, can it work on Freestanding programs? A quick grep shows many references to pthreads.