[英]C semaphores using sem_wait()
我正在使用信號量,並且正在為代碼的一部分而苦苦掙扎。
碼:
// 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);
請檢查fork返回值。 在此基礎上,您將確定代碼是在子進程還是父進程下執行。 因此調用sem_wait。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.