我对如何同步2个进程有些问题.第一个进程必须创建一个共享内存,然后等待第二个进程填充共享内存并将其发信号通知第一个进程.我不知道如何等待第一个过程.
这是我的流程外观的伪代码:
流程1:
create shared memory
create a semaphore
wait for the second process /* this part i dont know how to write */
output the shared memory
流程2:
get shared memory id
get the semaphore id
wait();
fill the shared memory
signalize();
解决方法:
到目前为止您是正确的.
正如您在问题中提到的那样,您正在使用信号量,这是您问题的答案.
在posix信号量api中,您有sem_wait(),它将等待直到信号量计数的值为零(一旦使用其他进程中的sem_post将其增加),等待将结束.
在这种情况下,您必须使用2个信号量进行同步.
进程1(阅读器)
sem_wait(sem1);
…….
…….
sem_post(sem2);
工程2(作家)
sem_wait(sem2);
…….
…….
sem_post(sem1);
这样,您可以在共享内存中实现同步.