1. ホーム
  2. linux

linuxではメッセージキューは時代遅れなのか?

2023-09-27 18:01:18

質問

私は最近 Linux でメッセージキュー (System V, しかし POSIX も大丈夫なはず) で遊んでいて、それらは私のアプリケーションに完璧なように見えますが、The Art of Unix Programming を読んだ後、それらが本当に良い選択なのかどうかわからなくなりました。

http://www.faqs.org/docs/artu/ch07s02.html#id2922148

<ブロッククオート

System V IPC の上位のメッセージパッシング層は、ほとんど使われなくなりました。下位層は共有メモリとセマフォで構成されており、相互排他ロックや同じマシン上で動作するプロセス間のグローバルなデータ共有が必要な状況では、まだ重要なアプリケーションを持っています。これらの System V 共有メモリ機能は POSIX 共有メモリ API へと進化し、Linux、BSD、MacOS X、および Windows でサポートされていますが、クラシック MacOS ではサポートされていません。

http://www.faqs.org/docs/artu/ch07s03.html#id2923376

<ブロッククオート

System V の IPC 機能は、Linux や他のモダンな Unix にも存在します。しかし、レガシーな機能であるため、あまり行使されることはありません。Linux 版は、2003 年半ばの時点で、まだバグがあることが知られています。誰もそれらを修正するほど気にしていないようです。

System V メッセージキューは、より最近の Linux バージョンではまだバグがあるのでしょうか?著者が POSIX メッセージキューは大丈夫だろうという意味なのか、よくわかりません。

ソケットはほとんどすべてのもの(?)に望ましいIPCであるようですが、ソケットや何か他のものでメッセージキューを実装することが非常に簡単であるとは思えません。それとも、私が複雑に考えすぎているのでしょうか?

私が組み込みLinuxで作業していることは関係ないのでしょうか?

どのように解決するのですか?

個人的に私はメッセージ キューがとても好きで、unix の世界では間違いなく最も十分に活用されていない IPC だと思います。 これらは高速で使いやすいのです。

2、3の考えです。

  • このうちのいくつかは単なるファッションです。 古いものが再び新しくなるのです。 メッセージ キューにピカピカのお父さんを追加すれば、来年の最新かつ最もホットなものになるかもしれません。 Google の Chrome が、タブのスレッドの代わりに個別のプロセスを使用しているのを見てください。 突然、1 つのタブがロックアップしてもブラウザ全体がダウンしないことに人々は興奮するようになりました。

  • 共有メモリには、He-man Halo のようなものがあります。 マシンから最後のサイクルを絞り出さなければ、本当のプログラマーとは言えませんし、MQ はわずかに効率が悪いのです。 多くのアプリケーションでは、これはまったくナンセンスなことですが、いったん定着した考え方を崩すのは難しい場合があります。

  • MQ は、束縛されないデータを使用するアプリケーションには本当に適していません。 パイプやソケットのようなストリーム指向のメカニズムの方が使いやすいのです。

  • System V の亜種は本当に人気がなくなりました。 一般的なルールとして、可能であれば POSIX バージョンの IPC を使用してください。