phtread_mutex_lock() 은 write 할 때만 쓰면되나요??
글쓴이: trymp / 작성시간: 토, 2011/05/21 - 3:00오후
리눅스를 배우는 초보입니다.
pthread_mutex_lock() 함수는 데이터가 수정될 때만 사용하면 되나요?
아니면 읽기가 일어날 때도 사용해야하나요??
가령
global int g_val = 100;
pthread_mutex_lock(mylock);
g_val = 200;
pthread_mutex_unlock(mylock);
tmp = g_val; // 이부분
여기서 g_val 변수를 읽는 부분도 phtread_mutex_lock 으로 막아주어야 하나요?
아니면 읽기일때는 안 걸어주어도 되나요??
고수님들의 조언 부탁드립니다.
Forums:
Read할 때에도 락을 걸어주어야 합니다
예를 들어 코드가 이런 식이라면,
B에서 has_data의 값을 true로 읽었다고 해도 queue에 제대로 된 데이터가 들어있다는 보장이 되지 않습니다. 요즘 cpu들은 머리가 좋아서 명령 수행 순서를 임의로 바꿀 수 있거든요. 선후관계를 보장하려면 읽는 쪽에서도 lock을 하고 읽어야 합니다.
댓글 달기