【发布时间】:2016-10-17 08:09:33
【问题描述】:
我有 2 个程序(进程)。一个进程写入共享内存,而另一个进程读取它。所以,我的方法是这样的: 最初,共享内存的值为 0。因此,进程 1 仅在值为 0 时写入。现在进程 1 已将其他值写入 shm 并“等待”直到值变为 0。进程 2 读取 shm 并将 0 写入其中。等待,我的意思是在 while(1) 循环中。
我的问题是这种方法是否可行,或者在 CPU 使用率和内存使用率方面我可以使用其他方法做得更好吗?
【问题讨论】:
-
我们可能需要了解更多关于目的的信息,但我建议阅读
unix sockets和message queues。这两者都是进程间通信 (IPC) 机制,例如共享内存。 -
A `while(1)` 永远不会结束。
-
当条件满足时我会打破它
-
Busy waiting 可能不是您想要的。您可能应该使用您的操作系统提供的一些同步机制。
-
我使用了同步。但我的问题是第一个进程在第二个进程读取它之前无法写入。只有在第二个进程读取后,第一个进程才会写入......
标签: c linux semaphore shared-memory