进程之间共享数据队列

时间:2012-05-10 23:00:26

标签: c multithreading process queue ipc

我有一个C程序,目前使用多个线程来处理数据。我使用glib GAsyncQueue为生产者线程将其数据发送到消费者线程。现在我需要将线程移动到独立的进程中,我不知道如何继续在它们之间推送数据。使用管道似乎不太适合我的任务,因为推送的数据量相当大。另一个选择是获取一块共享内存,但是,由于计算共享数据量的上限有点困难,因此该选项不太有吸引力。

您是否知道可以与多个进程一起使用的GAsyncQueue之类的东西?由于我已经使用了glib,我更喜欢使用它的设施,但如果它们提供了我需要的东西,我愿意使用其他库。

1 个答案:

答案 0 :(得分:0)

POSIX指定msgsnd(2)msgget(2)接口,但消息和队列大小可能比您希望的要小。 (Linux允许您使用/proc/sys/kernel/msgmax/proc/sys/kernel/msgmnb可调文件修改大小;默认值为8k和16k。)

由于消息总线是一种相当常见的需求,因此您可能希望选择RabbitMQ之类的内容,它提供了对多种语言的预先编写的绑定,并可能使未来的开发更容易。