簡體   English   中英

進程之間的共享數據隊列

[英]Shared data queue between processes

我有一個C程序,當前使用多個線程來處理數據。 我將glib GAsyncQueue用於生產者線程,以將其數據發送到消費者線程。 現在,我需要將線程移到獨立的進程中,並且不確定如何在它們之間推送數據。 使用管道似乎不太適合我的任務,因為要推送的數據量很大。 另一個選擇是獲得一塊共享內存,但是,由於計算共享數據量的上限有點困難,因此此選項吸引力不大。

您是否知道可以與多個進程一起使用的GAsyncQueue之類的東西? 因為我已經在使用glib,所以我更喜歡使用它的功能,但是如果其他庫提供了我需要的東西,我願意使用其他庫。

POSIX指定msgsnd(2)msgget(2)接口,盡管消息和隊列的大小可能比您希望的小。 (Linux允許您使用/proc/sys/kernel/msgmax/proc/sys/kernel/msgmnb可調文件來修改大小;默認/proc/sys/kernel/msgmnb 8k和16k。)

由於消息總線是相當普遍的需求,因此您可能希望選擇RabbitMQ之類的東西,它提供了對多種語言的預寫綁定,並可能使將來的開發變得更加容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM