C 进程间共享数据队列

C 进程间共享数据队列,c,multithreading,process,queue,ipc,C,Multithreading,Process,Queue,Ipc,我有一个C程序,目前使用多个线程来处理数据。我为生产者线程使用一个glib GAsyncQueue将其数据发送给消费者线程。现在我需要将线程移动到独立的进程中,我不知道如何在它们之间推送数据。使用管道似乎不太适合我的任务,因为推送的数据量相当大。另一种选择是获取一块共享内存,但是,由于计算共享数据量的上限有点困难,所以这个选项不太吸引人 你知道像GAsyncQueue这样可以用于多个进程的东西吗?由于我已经在使用glib,我更喜欢使用它的功能,但是如果其他库提供我所需要的,我愿意使用它们。POS

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


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

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


由于消息总线是一种相当常见的需求,您可能希望选择类似的东西,它提供了许多语言的预写绑定,并可能使未来的开发更容易。

您知道RabbitMQ在负载下的性能吗?比如说,它能处理每秒几百兆字节的数千条消息吗?