반응형

#include <stdio.h>
#include <pthread.h>
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
int count=0;

void *print_count(void *thread_name) {
   pthread_mutex_lock(&mutex);
   int i;
   for(i=0; i<5; i++){
      count = count + 1;
      sleep(1);
      printf("==>%s -> %d\n", thread_name, count);
   }
   pthread_mutex_unlock(&mutex);
}

main() {
   pthread_t thread1;
   pthread_t thread2;
   char *message1 = "Thread 1";
   char *message2 = "Thread 2";
   int iret1, iret2;
   iret1 = pthread_create(&thread1, NULL, print_count, (void *)message1);
   iret2 = pthread_create(&thread2, NULL, print_count, (void *)message2);
   pthread_join( thread1, NULL);
   pthread_join( thread2, NULL);
   exit(0);
}

main()프로세스에서 발생시킨 thread1, thread2는 포인터 함수 print_count()함수를

동시에 사용하고 있다. 하지만 thread1에서 print_count()함수를 사용할  동안에

thread2의 간섭을 배제하기 위해서 pthread_mutex_lock()함수를 사용하고 있다.

thread1에서 print_count()함수를 사용하고 있는동안 thread2는 대기 상태에서

print_count()함수의 pthread_mutex_unlock()함수가 호출 될 때까지 대기한다.

JAVA에서 synchronized사용법과 약간 비슷한거 같다.

 


반응형

+ Recent posts