一个进程写入,而另一个进程读取共享内存
One process writing while the other one reads the shared memory
我有 2 个程序(进程)。一个进程写入共享内存,而另一个进程读取共享内存。所以,我的方法是这样的:
最初,共享内存的值为0。因此,进程1仅在值为0时写入。现在进程1已将其他值写入shm并且"waits"直到值变为0。进程2读取shm并将0写入它。等等,我的意思是在 while(1) 循环中。
我的问题是这种方法是否可行,或者我可以使用其他方法在 CPU 使用和内存使用方面做得更好吗?
提到的问题称为进程同步问题,给定的逻辑不过是该问题的忙等待方法,这是非常主要的解决方案。
阅读 Producer-Consumer Problem 与给定问题类似。
有一些比 Busy Waiting 更好的解决方案,例如:
自旋锁、信号量等
您可以从 here
获得所有这些的基本知识
希望对您有所帮助!!
我认为这很好,但是当两个进程都写入共享内存块时就会出现问题。
那时你可以使用信号量来同步这两个进程,一次允许一个进程写入共享 resource/memory 块。
你可以找到关于信号量的信息点击[这里](https://en.wikipedia.org/wiki/Semaphore_(programming)
我有 2 个程序(进程)。一个进程写入共享内存,而另一个进程读取共享内存。所以,我的方法是这样的: 最初,共享内存的值为0。因此,进程1仅在值为0时写入。现在进程1已将其他值写入shm并且"waits"直到值变为0。进程2读取shm并将0写入它。等等,我的意思是在 while(1) 循环中。
我的问题是这种方法是否可行,或者我可以使用其他方法在 CPU 使用和内存使用方面做得更好吗?
提到的问题称为进程同步问题,给定的逻辑不过是该问题的忙等待方法,这是非常主要的解决方案。
阅读 Producer-Consumer Problem 与给定问题类似。
有一些比 Busy Waiting 更好的解决方案,例如:
自旋锁、信号量等
您可以从 here
获得所有这些的基本知识希望对您有所帮助!!
我认为这很好,但是当两个进程都写入共享内存块时就会出现问题。 那时你可以使用信号量来同步这两个进程,一次允许一个进程写入共享 resource/memory 块。 你可以找到关于信号量的信息点击[这里](https://en.wikipedia.org/wiki/Semaphore_(programming)