목록42/Philosophers (2)
혼자 정리
Mutex lock mutex : mutual exclusion (상호 배제) 임계 영역 진입할 때 열쇠(lock) 가지고 들어가고, 나올 때는 열쇠 반납하는 느낌while (true) { acquire lock critical section release lock remainder section } acquire()와 release()의 두 함수 available의 불리안 변수. : lock을 얻을 수 있는 상황이면 true, 아니면 false. acquire() { while (!available) ; /* busy wait */ available = false; } release() { available = true; } acquire()와 release()과정도 atomically하게 이루어져야 ..
cf) 내용에 있는 오류로 발생하는 문제는 책임지지 않습니다. Data race 다음 코드 예시를 보자 #include #include int sum; void *run(void *param) { int i; for (i = 0; i < 10000; i++) sum++; pthread_exit(0); } int main() { pthread_t tid1, tid2; pthread_create(&tid1, NULL, run, NULL); pthread_create(&tid2, NULL, run, NULL); pthread_join(tid1, NULL); pthread_join(tid2, NULL); printf("%d\n", sum); }메인 함수에서 tid1과 tid2라는 스레드를 생성하였고 각각의 스레..