Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- > gcc -o thread_mutex thread_mutex.c -pthread
- > ./thread_mutex
- Thread: 1 Counter: 1
- Thread: 3 Counter: 2
- Thread: 2 Counter: 3
- Thread: 0 Counter: 4
- Thread: 4 Counter: 5
- >
- **/
- #include <pthread.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <assert.h>
- pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
- int counter = 0;
- void *perform_work(void *argument)
- {
- pthread_mutex_lock(&mutex);
- counter++;
- int passed_in_value;
- passed_in_value = *((int *) argument);
- printf("Thread: %2d Counter: %2d\n", passed_in_value, counter);
- pthread_mutex_unlock(&mutex);
- pthread_exit(NULL);
- return NULL;
- }
- int main(void)
- {
- const int NUM_THREADS = 5;
- pthread_t threads[NUM_THREADS];
- int thread_args[NUM_THREADS];
- int result_code, index;
- for (index = 0; index < NUM_THREADS; ++index) {
- thread_args[index] = index;
- result_code = pthread_create(&threads[index], NULL, perform_work, (void *) &thread_args[index]);
- assert(0 == result_code);
- }
- for (index = 0; index < NUM_THREADS; ++index) {
- result_code = pthread_join(threads[index], NULL);
- assert(0 == result_code);
- }
- exit(EXIT_SUCCESS);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement