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);
}