linuxではメッセージキューは時代遅れなのか?
質問
私は最近 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 を使用してください。
関連
-
LinuxでPingを無効にする、または許可する設定方法
-
Linux Mint システムの背景画像を変更する方法は? Linuxでデスクトップの背景を変更するためのヒント
-
Linux Mintのシステムバージョン情報はどこにありますか? Linux Mint のシステム情報を見るためのヒント
-
GCCのバージョンによる浮動小数点演算の例外発生
-
sudo が sudo として表示される: setuid root である必要がある
-
[解決済み] Linuxで特定のテキストを含むすべてのファイルを検索するにはどうすればよいですか?
-
[解決済み] Linux上で動作するC++コードのプロファイリングを行うにはどうすればよいですか?
-
[解決済み] LinuxのシェルスクリプトでYes/No/Cancelの入力を促すにはどうしたらいいですか?
-
[解決済み] Linux で grep を使ってファイル名だけを表示するにはどうしたらいいですか?
-
[解決済み] ターミナルで現在の日付と時刻を取得し、それに対してターミナルでカスタムコマンドを設定するにはどうすればよいですか?[クローズド]です。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
deepin20のサブネットマスクはどこですか?deepinのサブネットマスクを表示するためのヒント
-
Vmware 16仮想マシンを開けない場合、ファイルをローカルにコピーする方法は?
-
rsyncとinotfiyの組み合わせでリアルタイムバックアップ問題を実現
-
中国版「浮世」を含むUbuntu 20.04.2リリース
-
Kali Linuxのデフォルトのひげメニューアイコンを変更する方法は?
-
Centos7 dns service named installation, encountered ** server can't find xxx.com: NXDOMAIN問題
-
[解決済み] Linuxでデータファイルから最初の列(実際には行名)を削除する方法は?
-
[解決済み] cronは内部でどのようにジョブをスケジューリングしているのですか?
-
[解決済み] Linuxでファイルをシンボリックリンクするには?[クローズド]
-
[解決済み] ターミナルで現在の日付と時刻を取得し、それに対してターミナルでカスタムコマンドを設定するにはどうすればよいですか?[クローズド]です。