我有一个C程序,目前使用多个线程来处理数据。我使用glib GAsyncQueue为生产者线程将其数据发送到消费者线程。现在我需要将线程移动到独立的进程中,我不知道如何继续在它们之间推送数据。使用管道似乎不太适合我的任务,因为推送的数据量相当大。另一个选择是获取一块共享内存,但是,由于计算共享数据量的上限有点困难,因此该选项不太有吸引力。
您是否知道可以与多个进程一起使用的GAsyncQueue之类的东西?由于我已经使用了glib,我更喜欢使用它的设施,但如果它们提供了我需要的东西,我愿意使用其他库。
答案 0 :(得分:0)
POSIX指定msgsnd(2)
,msgget(2)
接口,但消息和队列大小可能比您希望的要小。 (Linux允许您使用/proc/sys/kernel/msgmax
和/proc/sys/kernel/msgmnb
可调文件修改大小;默认值为8k和16k。)
由于消息总线是一种相当常见的需求,因此您可能希望选择RabbitMQ之类的内容,它提供了对多种语言的预先编写的绑定,并可能使未来的开发更容易。