2012-09-01 3 views
0

Hello =) 다음 문제에 대한 의사 코드를 제안하려고하지만 세마포어의 동기화에 다소 혼란스러워서 다른 사람이 도울 수 있기를 바랍니다.이중 대기열을 사용하는 소비자 제작자

우리는 M 소비자와 M 생산자와 동일한 N 크기의 2 버퍼를 가지고 있습니다. 소비자는 하나의 버퍼에서 소비하고 생산자는 다른 버퍼에서 생산합니다. 소비자 버퍼가 비어 있고 생산자 버퍼가 꽉 차면 버퍼가 스왑되고 프로세스가 계속됩니다.

세마포어를 사용하여 프로세스를 동기화하는 방법에 대한 아이디어가 있으십니까? 고맙습니다!

답변

0

두 개의 세마포를 사용할 수 있습니다. 하나는 생산자 버퍼 용이고 다른 하나는 소비자 버퍼 용입니다. 생산자가 각 쓰기 작업에 대해 잠겨 있고 소비자는 각 읽기 작업에 대해 잠겨 있습니다. 스위칭은 두 버퍼 모두를 잠글 필요가 있습니다.

Btw. 생산자 버퍼가 가득 차고 소비자 버퍼가 이 아닌 경우이 비어 있어야합니까?

+0

생산자는 소비자 버퍼가 비게 될 때까지 기다려야합니다. – user1640377

+0

도움 주셔서 감사합니다! 세마포어는 버퍼가 스왑 될 때 프로세스가 실행되지 않도록하기 위해 있습니까? – user1640377

관련 문제