スレッド間通信のためにGLibのGAsyncQueueとPOSIXのmessage_queueの相対的なパフォーマンスを知っている人はいますか?私はLinux上でCで実装される多くの小さなメッセージ(一方向性と要求応答性の両方のタイプ)を持っています(今のところWindowsに移植されるかもしれません)。どちらを使うか決めようとしています。GLibのGAsyncQueueとPOSIXのmessage_queue
私が知ったところでは、GLibを使用する方が移植性が向上しますが、POSIX mqは、それらを選択またはポーリングできるという利点があります。
ただし、パフォーマンスが優れている情報は見つかりませんでした。
非常に興味深い。私はあなたの答えと質問をupvoted、おそらく今あなたがグラフを投稿できるようになります。 – kalev
私はいくつかの実験を行いました:データが生成されたことを消費者に知らせるためにスレッド間にシグナリングを追加しました。私はeventfd Linuxテクニックを使用しました。そしてすぐに、私はGAsyncQueueのパフォーマンスが他と似ていることが分かりました。 – dbikash
これは結果を説明しますか?すべてのLinux IPCメカニズムがカーネルを通過するため、同様のパフォーマンスが得られます。 GAsyncQueueは、何らかの理由でユーザー空間の実装(余分なユーザー空間)があり、カーネル領域のコピーが回避され、パフォーマンスが向上します。そして、eventfdメカニズムが追加されるとすぐに、カーネルが再び現れます。その理解は正しいのでしょうか? – dbikash