2016-10-17 154 views
0

我有2个程序(进程)。一个进程写入共享内存,另一个进程读取共享内存。所以,我的方法是这样的: 最初,共享内存的值为0.因此,只有当值为0时,进程1才会写入。现在进程1已经写入了一些其他值,以便shm和“等待”,直到值变为0.进程2读取shm并将0写入它。等待,我的意思是在while(1)循环中。一个进程写入,另一个进程读取共享内存

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

+0

我们可能需要更多地了解目的,但是我建议阅读'unix sockets'和'消息队列',它们都是进程间通信(IPC)机制,如共享内存。 –

+0

A while(1)'never ends。 –

+0

当条件满足时,我打破它。 – Harsha

回答

1

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

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

有这一些更好的解决方案不是忙等待,如:

自旋锁,信号灯等

您可以从here

希望这将有助于让这一切的基本知识!

0

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

相关问题