最近の言語の多くにはasync/awaitを実現する非同期ランタイムが実装されているが、
非同期ランタイムには非同期それ自体以外のメリットがあるという話。
非同期ランタイム未使用時にありがちなこと
- Windowライブラリを用いたプログラミングをおこなう際イベントループとしてそのライブラリが持つイベントループ関数を用いる必要が有る。
- イベントループでWindowイベント(redraw, resize, close, マウス・キーボードイベント等)を受取りそれに応じた処理を記述する。
- アプリの仕様上他のイベント(ファイル、ネットワークイベント等)を受けたくなるがWindowライブラリのイベントループでは他のイベント受け取ることがなかなか困難。
イベントソース統合FWとしての非同期ランタイム
非同期ランタイムは通常「非同期処理を実現する仕組み」として認識されているが、アプリケーションを作成する上では「イベントソースを統合するFW」という側面が非常に有用となる。
例えば上記の事例であれば、Windowライブラリが非同期ランタイムに対応していればファイルやネットワークイベントについてはもともと非同期ライブラリが対応しておりウインドウイベントとその他イベントを統合的に扱うことが可能となる。
余談:Qtの話
Qtはそれ自体が「イベントソース統合FW」とみなすことができsignal/slotを用いて各種イベントを統合的に扱うことができる。