게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
쓰레드 동기화에 대한 질문입니다!!
게시물ID : programmer_9424짧은주소 복사하기
작성자 : QUARTZ
추천 : 0
조회수 : 650회
댓글수 : 5개
등록시간 : 2015/04/18 11:03:46
안녕하세요 !
운영체제 공부중인 학생입니다.
concurrent program에 관련 문제에 대해 질문 드립니다
 
int   Gv;
void*  AddGv (void *ptr)
{
    Gv = Gv + 1;
    pthread_exit(0);
}
int main()
{
   pthread_t   th1, th2;
   Gv = 0;
   pthread_create (&th1, NULL, AddGv, NULL);
   pthread_create (&th2, NULL, AddGv, NULL);
   pthread_join (th1, NULL);
   pthread_join (th2, NULL);
   printf("Result = %d\n",Gv);
   return 0;
}
 
라는 코드에서
쓰레드간 동기화문제 때문에
Result가 2가 나오지 않을 경우를 배제하기 위한 코드를 제시하는것이 문제입니다.
 
그런데 굵게 표시된 부분에서 pthread_join 함수를 이용하면 해당 쓰레드가 종료될때까지 코드가 진행되지 않으니
 
   pthread_create (&th1, NULL, AddGv, NULL);
   pthread_join (th1, NULL);
   pthread_create (&th2, NULL, AddGv, NULL);
   pthread_join (th2, NULL);
 
로 단순히 고치면 되는것 아닌가요??
 
굳이 mutex함수를 써서 동기화를 제어해야 하는 이유가 무엇인지 궁금합니다.
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호