一个进程写入而另一个进程读取共享内存

时间:2016-10-17 08:09:34

标签: c linux semaphore shared-memory

我有2个程序(进程)。一个进程写入共享内存,而另一个进程读取它。所以,我的方法是这样的: 最初,共享内存的值为0.因此,进程1仅在值为0时写入。现在,进程1已将一些其他值写入shm并且"等待"直到值变为0.进程2读取shm并向其写入0。等等,我的意思是while(1)循环。

我的问题是,如果这种方法很好,或者我可以在CPU使用率和内存使用方面采用其他方法做得更好吗?

2 个答案:

答案 0 :(得分:1)

提到的问题称为进程同步问题,给定的逻辑只不过是忙碌等待的问题,这是非常主要的解决方案。

阅读类似于给定问题的Producer-Consumer Problem

有一些比忙碌等待更好的解决方案:

Spinlock,Semaphore等。

您可以从here

获取所有这些的基本知识

希望它会有所帮助!!

答案 1 :(得分:0)

我认为这很好但是当进程写入共享内存块时会出现问题。 那时你可以使用信号量来同步两个进程,允许一次一个地写入共享资源/内存块。 你可以找到有关信号量的信息点击[这里](https://en.wikipedia.org/wiki/Semaphore_(programming)