2012-05-10 13 views
1

私は現在、複数のスレッドを使ってデータを処理するCプログラムを持っています。私は、プロデューサスレッドがデータをコンシューマスレッドに送信するためにglib GAsyncQueueを使用します。スレッドを独立したプロセスに移行する必要があります。スレッド間でデータをプッシュする方法はわかりません。パイプを使用することは、プッシュされる量データがかなり大きいので、私の仕事にはあまり適していないようです。もう1つの選択肢は、共有メモリを取得することですが、共有データの量の上限を計算するのは少し難しいので、このオプションは魅力的ではありません。プロセス間の共有データキュー

複数のプロセスで使用できる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

関連する問題