gpt4 book ai didi

c - 如何通过posix命名信号量同步两个进程?

转载 作者:行者123 更新时间:2023-11-30 17:05:11 26 4
gpt4 key购买 nike

假设有两个进程,并且它们的pid彼此已知:

void proc_1(){
printf("1\n");
printf("3\n");
}

void proc_2(){
printf("2\n");
printf("4\n");
}

如何使用 posix 命名信号量来同步上述进程,以便输出如下:

1
2
3
4

我的第一个想法是(假设有两个信号量,sem_1,sem_2,并且它们的初始值都是0):

void proc_1(){
printf("1\n");
sem_post(sem_2);
sem_wait(sem_1)
printf("3\n");
exit(0);
}

void proc_2(){
sem_wait(sem_2);
printf("2\n");
sem_post(sem_1);
waitpid(pid_1);
printf("4\n");
}

最佳答案

waitpid(pid_1) 仅当进程 1 是进程 2 的子进程时才有效。
此版本没有该限制:

void proc_1()
{
printf("1\n");
sem_post(sem_2);
sem_wait(sem_1);
printf("3\n");
sem_post(sem_2);
}

void proc_2()
{
sem_wait(sem_2);
printf("2\n");
sem_post(sem_1);
sem_wait(sem_2);
printf("4\n");
}

关于c - 如何通过posix命名信号量同步两个进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35420643/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com