如何实现共享缓冲区?

时间:2011-08-05 12:21:42

标签: c++ pointers reference opencl child-process

我有一个程序可以创建3个工作程序。在我的情况下,最好的通信方法是通过一个内存缓冲区,所有四个程序都可以访问它。

有没有办法将指针,引用或任何类型的处理程序传递给子进程?

  

更新

三个子程序正在转换顶点数据,而主程序主要处理UI,系统消息,错误等。

我希望有一些方法可以利用OpenCL,这样四个程序就可以共享一个上下文。如果这是不可能的,那么访问所有程序中的顶点数组会很不错。

我认为我们的目标平台现在是Windows,但我们希望尽可能保持跨平台。如果没有办法利用OpenCL实现这一点,我们可能会回归到为少数不同的平台包装这段代码。

4 个答案:

答案 0 :(得分:2)

您的问题取决于平台,因此:

答案 1 :(得分:1)

如果您解释一下共享什么类型的数据以及系统的其他约束/目标,那么回答您的问题会更容易。

我想知道为什么你认为共享缓冲区会好?那是因为你想将缓冲区中的指针传递给要处理的数据吗?如果你想跨进程工作,那么你需要共享内存。

客户端 - 服务器方法如何根据请求向客户端发送数据?

有关您的问题的更多信息有助于提供更好的答案。

答案 2 :(得分:1)

您应该使用Named Shared Memory和进程间同步。

答案 3 :(得分:1)

这比共享内存缓冲区上的原始问题要宽一些,但根据您的设计,数据量和性能要求,您可以查看内存数据库(如Redis或分布式缓存),尤其是当您发现自己处于'发布 - 订阅'情况。