我有2个程序(进程)。一个进程写入共享内存,而另一个进程读取它。所以,我的方法是这样的: 最初,共享内存的值为0.因此,进程1仅在值为0时写入。现在,进程1已将一些其他值写入shm并且"等待"直到值变为0.进程2读取shm并向其写入0。等等,我的意思是while(1)循环。
我的问题是,如果这种方法很好,或者我可以在CPU使用率和内存使用方面采用其他方法做得更好吗?
答案 0 :(得分:1)
提到的问题称为进程同步问题,给定的逻辑只不过是忙碌等待的问题,这是非常主要的解决方案。
阅读类似于给定问题的Producer-Consumer Problem。
有一些比忙碌等待更好的解决方案:
Spinlock,Semaphore等。
您可以从here
获取所有这些的基本知识希望它会有所帮助!!
答案 1 :(得分:0)
我认为这很好但是当进程写入共享内存块时会出现问题。 那时你可以使用信号量来同步两个进程,允许一次一个地写入共享资源/内存块。 你可以找到有关信号量的信息点击[这里](https://en.wikipedia.org/wiki/Semaphore_(programming)