'식사하는 철학자'에 해당되는 글 1건

  1. 2010.01.08 식사하는 철학자 동기화

식사하는 철학자 동기화

CS/Common 2010. 1. 8. 06:48
원문 : Stanford iTunesU Programming Paradigm 17강

Semaphore forks[5] = {1, 1, 1, 1, 1}
Semaphore numAllowedToEat(4); // 최소한 한명은 Idle. DeadLock 피함.

void Philosopher(int id)
{
	for (int i=0; i < 3; ++i) 
	{
		Think();
		SemaphoreWait( numAllowedToEat );
		SemaphoreWait( forks[ id ] );
		SemaphoreWait( forks[ (i+1)%5 ] );
		Eat();
		SemaphoreSignal( forks[ id ] );
		SemaphoreSignal( forks[ (id+1)%5 ] );
		SemaphoreSignal( numAllowedToEat );
	}
}

학부때 OS 시간에는 뭔가 엄청 복잡하고 어려웠는데... 왜이렇게 간단하지...? ;;;
: