2012-05-10 66 views
1

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

你知道像GAsyncQueue这样的东西可以用于多个进程吗?由于我已经使用glib,我更喜欢使用它的设施,但如果他们提供我需要的,我愿意使用其他库。

回答

0

POSIX指定一个msgsnd(2),msgget(2)接口,尽管消息和队列大小可能比你想要的小。 (Linux允许你修改与/proc/sys/kernel/msgmax/proc/sys/kernel/msgmnb可调文件的大小;默认值是8K和16K)

由于消息总线,你不妨挑类似RabbitMQ,它提供了预先写好的绑定到一个相当普遍的需求许多语言,并可能使未来的开发更容易。

+0

你知道RabbitMQ如何在负载下执行吗?它可以处理每秒数百兆字节的数千条消息吗? – Elektito

+0

对不起,我从来没有推过RabbitMQ超过玩具级别的使用... – sarnold