C语言 进程之间的共享数据队列



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

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

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

由于消息总线是一个相当普遍的需求,你可能希望选择像RabbitMQ这样的东西,它提供了对多种语言的预先编写的绑定,并且可能使未来的开发更容易。

最新更新