2009-10-25 5 views
0

우리가 수행중인 클래스에서 멀티 스레드 프로그래밍을 다루고 있습니다. 교수님은 다음과 같은 보너스 질문을했습니다 :단일 세마포어를 사용한 다중 프로세스 동기화

각 프로세스 P0, P1, P2 및 P3은 다른 3 개가 교차하거나 특정 동기화 지점에 도달 할 때까지 기다려야합니다. 그들의 코드는 오직 그 프로세스가 자신의 동기화 지점을 통과 할 수 있습니다.

4 개의 세마포어로 질문에 대답하는 방법을 이미 알고 있습니다. 단호한 부분은 하나의 세마포어만으로 문제를 해결합니다.

진행 방법에 대한 의견이나 제안 사항이 있으십니까?

+0

귀하의 문언은 정확하지 않습니다. 따라서 올바른 지침을 얻지 못할 수도 있습니다. –

답변

0

바이너리가 아닌 경우 -4로 세마포어를 초기화하십시오.

+0

괜찮아요 down-voting에 대한 설명? – attwad

+0

나는 투표를하지 않았지만 음수 값으로 세마포어를 초기화 할 수 없기 때문에 그것이 의심 스럽습니다. POSIX에서 값은 부호가 없으며 Windows 문서는 0 이상의 값을 명시합니다. – Duck

+0

이것은 매우 제한적입니다 : 나는 종종 역 세마포어가 필요하고 나는 결코 그것을 찾을 수 없습니다. 소프트웨어 제한으로 인해 가능하지는 않지만 그의 대답은 완벽하게 논리적입니다. 약간의 설명은 환영받을 것입니다. –

0

솔루션에 부과 된 제한 사항에 대해 약간은 알고 있지만 The Little Book of Semaphores을 참조하고 장벽에 대한 섹션을 읽어보십시오. 그것은 당신에게 몇 가지 아이디어를 줄 것입니다.

+0

리소스를 제공해 주셔서 감사합니다. – KidDaedalus

0

교수는 당신이 하나가 아닌 2 개의 세마포어를 사용할 수 있다고 말했던 것을 알게되었습니다. 그는 잠시 동안 문제에 대해 생각해 본 것처럼 하나의 세마포어로는 불가능하다고 믿습니다.

+0

그 이유는 제약에 대해 많이 언급하지 않았다는 것입니다. 하나의 세마포와 뮤텍스로 카운터를 보호 할 수는 있지만 뮤텍스를 사용할 수 있는지 또는 두 번째 세마포어로 계산할 수 있는지 확실하지 않았습니다. – Duck