Mutex Programming
การจัดจังหวะการทำงานของเทรด (Thread Synchronization)
Last updated
Was this helpful?
Was this helpful?
// simple_mutex.c
#include <stdio.h>
#include <pthread.h>
#define NTHREADS 10
void* thread_function(void*);
pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;
int counter = 0;
main() {
pthread_t thread_id[NTHREADS];
int i, j;
for (i = 0; i < NTHREADS; i++) {
pthread_create(&thread_id[i], NULL, thread_function, NULL);
}
for (j = 0; j < NTHREADS; j++) {
pthread_join(thread_id[j], NULL);
}
// Now that all threads are complete I can print the final result.
// Without the join I could be printing a value before all the threads
// have been completed.
printf("Final counter value: %d\n", counter);
}
void* thread_function(void *dummyPtr) {
printf("Thread number %ld\n", pthread_self());
pthread_mutex_lock(&mutex1);
counter++;
pthread_mutex_unlock(&mutex1);
}$ gcc -o simple_mutex simple_mutex.c –lpthread
$ ./simple_mutex
Thread number 139638417069824
Thread number 139638425462528
Thread number 139638442247936
Thread number 139638433855232
Thread number 139638408677120
Thread number 139638400284416
Thread number 139638391891712
Thread number 139638383499008
Thread number 139638375106304
Thread number 139638366713600
Final counter value: 10