pthread
Process is a running program and in multi task OS, different process is allocated to each memory space. Basically, memory space can not be accessed from different process.
Thread is an executable unit which is executed independently in one process. And Each thread has same memory space. Generally, a process, which called main thread, is booted and run program which is written within main().
#include <stdio.h> #include <unistd.h> // define sleep() #include <pthread.h> // thread void* thread( void* args ) { int counter = 0; while( 1 ){ printf( "thread : %d\n", counter ); sleep( 1 ); // thread is stopped for one second counter++; } return NULL; } // main thread int main() { pthread_t th; // create thread and run pthread_create( &th, NULL, thread, (void *)NULL ); // wait until it get any key getchar(); return 0; }
eg2
When user type any key, program is finished in previous example. pthread_join() waits until thread is finished.
#include <stdio.h> #include <unistd.h> // define thread #include <pthread.h> int counter = 0; // thread void* thread( void* args ) { int i = 0; for( i = 0; i < 10; ++i , ++counter ){ printf( "thread : %d\n", counter ); sleep( 1 ); // thread is stopped one sec } return NULL; } // main thread int main() { pthread_t th; // creaste thread and run pthread_create( &th, NULL, thread, (void *)NULL ); scanf( "%d", &counter ); // wait until thread is finished pthread_join( th, NULL ); return 0; }