mutex lock 질문 드립니다.
글쓴이: jkam7520 / 작성시간: 목, 2021/03/04 - 4:21오후
리눅스 초보 개발자 입니다.
여러개의 스레드를 아래와 같이 pthread_mutex_t에 대한 변수를 여러개 선언해서 접근제어가 가능한가요?
pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t mutex2 = PTHREAD_MUTEX_INITIALIZER;
A_thead(){
pthread_mutex_lock(&mutex1);
a++;
pthread_mutex_unlock(&mutex1);
}
B_thead(){
pthread_mutex_lock(&mutex1);
printf("%d\n",a);
pthread_mutex_unlock(&mutex1);
pthread_mutex_lock(&mutex2);
b++;
pthread_mutex_unlock(&mutex2);
}
C_thead(){
pthread_mutex_lock(&mutex2);
printf("%d\n",b);
pthread_mutex_unlock(&mutex2);
}
Forums:
네 가능합니다. 다만 데드락 위험성으로 인해 좋은
네 가능합니다. 다만 데드락 위험성으로 인해 좋은 설계 방향은 아닙니다.
데드락 시나리오를 여러개 만들고 테스트하여 사용하는게 바람직합니다.
도움 주셔서 감사합니다.
도움 주셔서 감사합니다.
mutex 사용의 원칙은 하나의 자원당 하나의
mutex 사용의 원칙은 하나의 자원당 하나의 mutex를 사용하는 겁니다. 예를들어 스테이크를 먹는다고 할 때 나이프와 포크가 필요하면 나이프, 포크 각각에 mutex를 사용하는 것이죠.
도움 주셔서 감사합니다.
도움 주셔서 감사합니다.
코드를 올릴때는 아래와 같은 식으로 code 태그로
코드를 올릴때는 아래와 같은 식으로 code 태그로 감싸면 보기 좋게 나옵니다. 글 작성창을 잘 보시면 텍스트 포맷에 대한 도움말 링크도 있고 미리보기 기능도 있으니 한 번 눈여겨 보시길 권합니다.
이렇게 작성하면 아래와 같이 나오는 식입니다.
bbcode 는 지양을.. migration 할 때
bbcode 는 지양을.. migration 할 때 너무 힘듭니다.
<code lang="cpp"> ~~~ </code>
와 같이 html tag 형식을 사용해 주세요
사정을 모르고 bbcode 위주로 써왔네요.
사정을 모르고 bbcode 위주로 써왔네요.
앞으로 신경쓰겠습니다.
위 글도 html tag로 수정해뒀습니다.
뮤텍스를 너무 많이 쓰는 것 좋지 않은 것 같아요.
예전에 뮤텍스를 최대한 많이 생성해 코드 블락을 뮤텍스로 보호하면,
레이스 컨디션을 방지할 수 있을 것이라 예상하고 생각했었는데요.
뮤텍스를 너무 많이 생성하면,
뮤텍스를 기다리다가 계속 잠들거나 서로 뮤텍스가 해제되기를 기다리며 잠드는 현상(보통 데드락이라고 하죠)을 겪을 수 있습니다.
(개인블로그)
http://rousalome.egloos.com
댓글 달기