mutex lock에 대해서 궁금증..
글쓴이: la9527 / 작성시간: 목, 2004/10/14 - 10:21오후
pthread_mutex에 대한 궁금한점에 대해
이해가 않가는 점에 대해 물어 볼려고 합니다.
예를 들어 쓰레드 두개가 돌아가고 있는데
두개의 쓰레드에서 공통으로 쓰는 변수 하나를 두고 데이터를 읽고 쓰고 하는데,
mutex lock을 쓰던 않쓰던 상관없이 잘 돌아가는데..
이것이 경쟁에 의해서 데이터를 읽고 쓰는 것인지 궁금합니다.
그리고 쓰레드 제가 약간 헤깔린 것이 쓰레드가 여러개이든 두개이든
mutex lock을 걸면 전체 쓰레드가 대기하다가 unlock을 걸때
다시 쓰레드가 돌아가는 것인지 궁금합니다.
제가 잘못 알고 있는것이 있으면 답변부탁 드리겠습니다.
프로그램을 하면서 계속 헤깔리고 있습니다.
lock걸고 않걸고에 대해서 프로그램이 이상하게 돌고
그러는 문제가 있어서 이글을 올립니다.
Forums:
Re: mutex lock에 대해서 궁금증..
lock 없이 잘 돌아간다는건, 어쩌다 보니 엉키지 않은 것 뿐인겁니다. 신경쓰지 않고 실제로 도입했다가 문제가 생기면 난리 나는거지요 :)
전체 쓰레드는 대기하지 않습니다. 그 mutex에 대해 lock을 거는 쓰레드만 대기합니다. 즉, 현재 lock 상태인 mutex에 pthread_mutex_lock()을 호출한 쓰레드만 대기 상태에 빠집니다. unlock을 하면 lock을 호출한 순서대로 처리가 계속 이루어집니다. 즉, 해당 mutex와 관계가 없는 쓰레드는 lock을 걸건 말건 무시하고 진행합니다.
lock 하면서 이미 다른 스레드가 lock을 건 경우에 대해 대기로 들
lock 하면서 이미 다른 스레드가 lock을 건 경우에 대해 대기로 들어가는 방식도 있고 바로 리턴되는 방식도 있습니다.
상황에 따라 적절히 호출하면 됩니다.
---------
간디가 말한 우리를 파괴시키는 7가지 요소
첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스
이익추구를 위해서라면..
다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치
답변 주셔서 감사합니다.
프로그램 진행하는데 Single과, Multi CPU 에서 많은 차이를 보여서 mutex 때문에 그런가 했더니 역시 답변주신분들의 말씀대로 역시 였네요.
도움을 주셔서 감사합니다.
https://github.com/la9527
댓글 달기