Advertisement
Guest User

Untitled

a guest
Jul 5th, 2015
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.17 KB | None | 0 0
  1. /**
  2. > gcc -o thread_mutex thread_mutex.c -pthread
  3. > ./thread_mutex
  4. Thread: 1 Counter: 1
  5. Thread: 3 Counter: 2
  6. Thread: 2 Counter: 3
  7. Thread: 0 Counter: 4
  8. Thread: 4 Counter: 5
  9. >
  10. **/
  11.  
  12.  
  13. #include <pthread.h>
  14. #include <stdio.h>
  15. #include <stdlib.h>
  16. #include <assert.h>
  17.  
  18. pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
  19. int counter = 0;
  20.  
  21. void *perform_work(void *argument)
  22. {
  23. pthread_mutex_lock(&mutex);
  24. counter++;
  25. int passed_in_value;
  26. passed_in_value = *((int *) argument);
  27. printf("Thread: %2d Counter: %2d\n", passed_in_value, counter);
  28. pthread_mutex_unlock(&mutex);
  29. pthread_exit(NULL);
  30.  
  31. return NULL;
  32. }
  33.  
  34. int main(void)
  35. {
  36. const int NUM_THREADS = 5;
  37.  
  38. pthread_t threads[NUM_THREADS];
  39. int thread_args[NUM_THREADS];
  40. int result_code, index;
  41.  
  42. for (index = 0; index < NUM_THREADS; ++index) {
  43. thread_args[index] = index;
  44. result_code = pthread_create(&threads[index], NULL, perform_work, (void *) &thread_args[index]);
  45. assert(0 == result_code);
  46. }
  47.  
  48. for (index = 0; index < NUM_THREADS; ++index) {
  49. result_code = pthread_join(threads[index], NULL);
  50. assert(0 == result_code);
  51. }
  52.  
  53. exit(EXIT_SUCCESS);
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement