簡體   English   中英

使用sem_wait()的C信號量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM