【发布时间】:2019-10-22 04:10:01
【问题描述】:
我试图使以下代码永远不允许 + 的数量大于 - 的数量。我正在考虑添加一个简单的c sleep(1) 行,但我很想知道是否有更好的方法来使数量相等。这应该是一个无限循环。
int main(){
if(fork() ==0)
while(1){
write(1,"-",1)
}
else
while(1){
write(1, "+",1);
}
return 0;
}
这个函数使用信号量是否正确?
int main(){
int parent_sem = get_semaphore(0);
int child_sem = get_semaphore(1);
if(fork() ==0)
while(1){
sem_wait(child_sem);
write(1,"-",1);
sem_signal(parent_sem);
}
else
while(1){
sem_wait(parent_sem);
write(1, "+",1);
sem_signal(child_sem);
}
return 0;
}
【问题讨论】:
-
你想要 IPC。你可以例如使用信号量让他们轮流写一个字符,但是 Linux 有很多选择,所以可能有更好的方法。
-
是的,它会比那个更复杂,哈哈。你需要同步你的进程,因为它们需要知道彼此的状态。
-
使用信号量的例子是什么?