Dining Philosopher Problem 식사하는 철학자 문제는 다익스트라 선생님께서 논문을 통해 제시하신 대표적인 데드락 상황이다. 위와 같이 원형의 탁자에 5개의 포크가 놓여있다. 스파게티를 먹기 위해서는 2개의 포크를 사용해야한다는 규칙이 있다. 이 상황에서 5명의 철학자가 포크를 한 개씩 잡고 데드락에 빠지면 모두가 굶어 죽는 starvation 이 발생한다..! 철학자가 다 굶어죽는 c++ 코드는 다음과 같다. 더보기 #include #include #include #include #define NUM 5 sem_t forks[NUM]; // forks void *philosopher(void*); int main(){ pthread_t threads[NUM]; for(int i=0; i
원문링크 : [전공생이 설명하는 OS] 동기화 - (6) 식사하는 철학자 문제 (코드 포함)