使用sem_wait()的C信号量

时间:2017-05-01 08:15:20

标签: c semaphore

我正在使用信号量,我正在努力处理代码的一部分 代码:

map(lambda, list)

问题是,由于reduce(lambda x, y : x + y),该循环在第一次迭代后停止,但我希望它只停止当前进程,因此所有其他迭代都可以完成,并且在代码结束时,我将&# 39;释放'所有过程。有没有办法如何实现这一点?
谢谢!

编辑:

// 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);
}

1 个答案:

答案 0 :(得分:1)

请检查前叉返回值。在此基础上,您将确定代码是在子进程或父进程下执行的。因此,请调用sem_wait。