Linux中的信号量和共享内存

我对如何同步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);

这样,您可以在共享内存中实现同步.

上一篇:java之Semaphore使用介绍


下一篇:Java并发工具类-Semaphore,Exchanger