2009-05-14 2 views
2

최근에 나는 식당 철학자 문제에 관해 this Wikipedia article을 읽었지 만 Chandy/Misra 솔루션으로는 명확하지 않습니다.식당 철학자 문제 - 설명이 필요합니다

"포크가있는 철학자가 요청 메시지를 받으면 그는 깨끗한 포크를 유지하지만 더러워지면 포기합니다." 이 질문의 맥락에서, 그는 먹는다면 그것을 통과시키고, 아직 먹기 시작하지 않으면 그것을 지킵니다.

시나리오에 따르면 더티의 의미는 무엇입니까? 스레드가 실행 중이거나 또는 실제로 실행 중입니까?

+0

나는 달리기를 마쳤다 고 생각한다. 또는 철학자가 자신의 부분을 위해 식사를 마쳤으므로 포크가 더러워졌습니다. – shahkalpesh

답변

2

더티 란 처리가 시작되어 중단 될 수 있음을 의미합니다.

2 개의 포크가있는 경우에만 처리 ​​할 수 ​​있습니다.

+0

Dirty는 또한 "처리가 아직 시작되지 않았거나 이미 완료되었으므로 다른 사용자를 방해 할 필요없이 즉시 처리 할 수 ​​있습니다."라는 의미입니다. – ChrisW

+0

그래서 모든 포크가 시작되어 Dirty를 마칩니다. 그들이 깨끗하게 시작하면, 아무도 그들을 사용하지 않을 것입니다. – GordyII

+0

포크가 깨끗한 유일한 시간은 한 철학자에게서 다른 철학자에게 전달되는 순간입니다. 중요한 것은 그것이 깨끗한 지 아닌지 (사실상 결코 깨끗하지 않기 때문에)가 아니라 당신이 그것을 받았을 때 * 깨끗한 지 여부입니다. 즉, 유휴 상태인지 또는 사용 가능한지 그리고 당신이 그걸 (더러운) 또는 그것이 바빴던 wheher와 당신은 그것을 요청해야했고, 그것을 받았다 (깨끗하게하게되는). – ChrisW

0

더티는 '유휴'또는 '사용 가능'을 의미하며 깨끗한 것은 '요청해야 함'또는 '선매권을 가졌음'을 의미합니다.

포크를 집어 올리면 포크가 더러워지며 (포크는 원했을 때 포크가 맞지 않았 음) 포크는 요청해야한다면 깨끗하고 초기 상태는 더럽다고 말합니다.

  • 사용할 수있는 포크 => 포크 더러워 => 청소하고 물을 때 포기하십시오.

  • 사용할 수있는 포크가 없음 => 요청해야 함 => 클리닝 됨.

그것은 Don't Interrupt an Interrupt이라는 조직 패턴을 생각 나게합니다.

관련 문제