2016-10-17 46 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)

相關問題