0
세마포어로 작업 중이며 일부 코드로 고민하고 있습니다.
CODE :sem_wait()를 사용하는 C 세마포어
// semaphore initialized to zero
for(int i = 0; i < N; i++)
{
fork();
// statements
sem_wait(semaphore);
printf("Process %d is done\n", i);
exit(0);
}
for(int i = 0; i < N; i++)
{
sem_post(semaphore);
}
문제의 끝에서 그 루프 때문에 sem_wait
의 첫번째 반복 이후에 정지하지만 그렇게 다른 반복을 수행 할 수 있으며, 해당 현재 프로세스를 중지하고자하고있다 코드, 나는 모든 프로세스를 발표 할 것이다. 어떻게 이것을 달성 할 수있는 방법이 있습니까?
감사합니다.
편집 :이
// initialization of semaphore
semaphore = mmap(NULL, sizeof(sem_t), PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0);
sem_init(semaphore, 1, 0);
우리에게'semarophe' 변수를 어떻게 초기화 시켰는 지 보여주십시오. –
"현재 프로세스"의 의미를 설명 할 수 있습니까? 그 의미를 설명하면, 테스트 할 필요가있는 것을 테스트하는'if' 문에서'sem_wait'에 대한 호출을 감싸기 만하면됩니다. –
음, for 루프에서는'fork()'를 N 번 호출하므로 N 개의 프로세스를 생성합니다. 그래서 현재의 프로세스는 매 반복마다 각 프로세스를 의미합니다. – SevO