The POSIX threads library, or pthreads, is a standardized interface for using lightweight threads in C programs on POSIX (Portable Operating System Interface based on Unix) platforms.
Note that C libraries can easily be used in programs written in other compiled languages, so pthreads can be used directly in C++ and Fortran programs. There are also well-developed interfaces for many other languages.
The pthreads system addresses the same basic needs as OpenMP, but
using a different approach. Threads are created manually using
pthread_create()
in much the same way as we would use
fork()
to create a new process.
/* * Example from Pthreads tutorial at: * https://computing.llnl.gov/tutorials/pthreads/ */ #include <pthread.h> #include <stdio.h> #define NUM_THREADS 5 void *PrintHello(void *threadid) { long tid; tid = (long)threadid; printf("Hello World! It's me, thread #%ld!\n", tid); pthread_exit(NULL); } int main (int argc, char *argv[]) { pthread_t threads[NUM_THREADS]; int rc; long t; for(t=0; t<NUM_THREADS; t++){ printf("In main: creating thread %ld\n", t); rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t); if (rc){ printf("ERROR; return code from pthread_create() is %d\n", rc); exit(-1); } } /* * Code here will be run simultaneously by multiple threads. */ /* Last thing that main() should do */ pthread_exit(NULL); }