非同期プログラミング環境
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/11/13 02:30 UTC 版)
「非同期IO」の記事における「非同期プログラミング環境」の解説
コールバックなどを利用した非同期I/Oの結果の取得は、設計やプログラミングが煩雑になる。特に出力よりも入力で問題が大きい[要説明]。非同期I/Oに限った話ではないが、一般的な非同期処理を記述する「非同期プログラミング」を容易にするために、ライブラリや言語構文によるサポートが用意されているプログラミング環境もある。 ライブラリによるサポートは、例えばJava 1.5にて標準化されたFutureや、C++11にて標準化されたstd::async/std::futureなどがあり、これらはスレッドベースのFuture パターン (Promise) を実現する。.NET Framework/.NET CoreではC#などの.NET言語から利用可能なタスク並列ライブラリ(英語版) (Task Parallel Library, TPL) が、またMicrosoft Visual C++の同時実行ランタイムではC++から利用可能な並列パターンライブラリ(英語版) (Parallel Patterns Library, PPL) が用意されている。さらにこれらを発展させたものとして、C# 5.0/VB.NET 11以降や、Python 3.5以降にはasync/await構文が用意されている。なお、F#には非同期ワークフロー (asynchronous workflow) と呼ばれる、TPLとは異なる独自のインフラを利用した非同期プログラミングのための機能が備わっている。C++ではC++20にてco_await構文が標準化された。 JavaScriptはシングルスレッドで動作するため、非同期プログラミングはイベント駆動ベースの疑似的な手法に頼らざるを得なかったが、Web Workerによってマルチスレッドプログラミングがサポートされるようになった(Web Workerのスレッドではメモリ空間を共有せず、実際にはメッセージベースのマルチプロセスプログラミングとなる)。そのほか、ECMAScript 2015 (ES2015) ではPromiseが、ES2017ではasync/await構文が標準化された。
※この「非同期プログラミング環境」の解説は、「非同期IO」の解説の一部です。
「非同期プログラミング環境」を含む「非同期IO」の記事については、「非同期IO」の概要を参照ください。
- 非同期プログラミング環境のページへのリンク