2012-05-10 98 views
1

我有一個C程序,當前使用多個線程來處理數據。我使用glib GAsyncQueue爲生產者線程發送他們的數據到消費者線程。現在我需要將線程轉換爲獨立的進程,我不知道如何繼續在它們之間推送數據。由於推送的數據量相當大,使用管道似乎不適合我的任務。另一個選擇是獲取一段共享內存,但是由於計算共享數據量的上限有點困難,因此該選項不具吸引力。進程之間的共享數據隊列

你知道像GAsyncQueue這樣的東西可以用於多個進程嗎?由於我已經使用glib,我更喜歡使用它的設施,但如果他們提供我需要的,我願意使用其他庫。

回答

0

POSIX指定一個msgsnd(2),msgget(2)接口,儘管消息和隊列大小可能比你想要的小。 (Linux允許你修改與/proc/sys/kernel/msgmax/proc/sys/kernel/msgmnb可調文件的大小;默認值是8K和16K)

由於消息總線,你不妨挑類似RabbitMQ,它提供了預先寫好的綁定到一個相當普遍的需求許多語言,並可能使未來的開發更容易。

+0

你知道RabbitMQ如何在負載下執行嗎?它可以處理每秒數百兆字節的數千條消息嗎? – Elektito

+0

對不起,我從來沒有推過RabbitMQ超過玩具級別的使用... – sarnold