父母与子女之间的沟通

时间:2010-05-17 12:52:57

标签: linux ipc fork unix

新手问题:

在Unix上,在父母和一些孩子的程序中:
- 父母如何提醒孩子有效做一些工作..?
- 或者孩子们如何等待父母信号开始做一些工作?

编辑:
这个程序尝试并行进行复杂的计算,我已经使用共享内存作为所有子项的公共工作区来更新结果和数据传输。
我现在需要的是父母对所有孩子说“开始”......(多次打电话)

由于

2 个答案:

答案 0 :(得分:4)

您的ipc标记说明了一切。您需要研究进程间通信:

  • 共享内存。
  • 信号量。
  • 管。
  • 信号。
  • 内存映射文件。
  • 套接字。

毫无疑问还有其他可能性,但这是一个良好的开端。

每个效率的方式几乎取决于您的用例。如果您只需要通知孩子做某事,我可能会使用信号。如果您需要在进程之间传递更多信息,那么完全指定要求可能是个好主意。


可能想要考虑的一件事是完全绕过所有进程间的东西而只是使用线程。至少在Linux中,线程是调度程序的一等公民。较旧的UNIX可能已经区分(使用用户模式线程),但Linux的情况并非如此。

我发现以这种方式执行它更简单,并且您的信息会自动共享(请记住,您仍需要使用互斥锁等保护共享内容)。


如果您已经致力于共享内存,则另一种可能性是使用信号。假设你为每个孩子留出了那段记忆(并且他们知道他们在哪里),信号可能是通知一群孩子并行工作的最快方式。

如果您的孩子只是在select循环中等待(例如)30秒超时进行定期工作,则信号将使其立即退出EINTR。这样可以为您提供高效的CPU使用率,同时仍能立即响应。

答案 1 :(得分:1)

查看Beej的IPC指南,了解它的工作原理......这是一本很好的指南。 Beej也在同一个网站上提供套接字。