メモです。
非同期メッセージ通信を用いるメリットについて。
まず同期的に使う非同期呼び出しというのは、
- コンテキストA→(お手紙)→コンテキストB
- Aは、Bからのお返事を待つ(ここでブロック)
- Bはお手紙の内容を読んで処理する
- BはAに結果を書いたお返事を返す
- Aはお返事を受け取って処理継続
というように動作するものです。単純なものでは、Aから見れば関数呼び出しと変わりません。
分散システムなどでスケールする通信手段として仕方なく、同期的非同期メッセージ通信を用いる場合。これは分散化対応のRTOSなどでしばしば見られます。
どこのプロセッサで実行されているか分からない(場合によってはネットワークの向こう側)プロセスの情報を取得するシステムコールは内部で同期型非同期通信が行われているはずです。
閉じたシステム内でもわざわざ非同期通信を同期的に使う価値はあります。たとえばスタックの消費量の削減です。
非同期通信を挟むことで、関数呼び出しの長い鎖が途切れます。なので非同期通信メッセージベースでシステムを組み上げれば、スタックは小さくて済ませられるでしょう。
それを分からずにプログラムを書けば、そんなメリットは容易に吹き飛ぶので、非同期通信などという厄介なものは使わなければよいのです。
コメント