1

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

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

4

1 回答 1

0

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

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

于 2012-05-10T23:17:16.623 回答