최근에이 문제는 첫 번째 리더/라이터 문제와 비슷합니다."세마포어를 사용하여 N 개의 프로세스 장벽 구현"으로 수정
Implementing an N process barrier using semaphores
나는 그것을 수정하려고하고 있는지가 재사용하고 제대로 작동 할 수했다.
n = the number of threads
count = 0
mutex = Semaphore(1)
barrier = Semaphore(0)
mutex.wait()
count = count + 1
if (count == n){ barrier.signal()}
mutex.signal()
barrier.wait()
mutex.wait()
count=count-1
barrier.signal()
if(count==0){ barrier.wait()}
mutex.signal()
이 정보가 맞습니까?
내가 발견하지 못한 실수가 있는지 궁금합니다.
대단히 감사합니다! 그렇다면 다른 세마포어 인 "size = semaphore (n)"과 size.wait()를 사용하여 항목을 제어하십시오. "if (count == 0) {for (i = 1 ~ n) {size.signal()} "을 새로 고칩니다. 그게 맞습니까? –
나는 잘 동작해야한다고 생각한다. –