Open棟梁Project - マイクロソフト系技術情報 Wiki
目次 †
概要 †
非同期処理の実装史 †
1. Thread、ThreadPool? †
従来の、マルチスレッド・プログラミング。
- スレッドの並列実行はOSが裏で無意識にしてくれていた。
- タイムスライスで細切れ/ラウンドロビンで論理的に並列実行。
- CPUのコア数に応じて、物理的に並列実行。
- しかし、以下の処理は意識的に実装する必要があった。
- 非同期処理をスレッド関数として分離して実装する。
- スレッド関数を作成したワーカースレッドに渡す。
- スレッド関数の結果をメインスレッドで待ち合わせる。
2. APM、EAP (Control.Invoke、.BeginInvoke?) †
「Windowsメッセージングキュー(Control.Invoke、.BeginInvoke?)」による方式。
この非同期処理方式では、
- Foregroundスレッド(UIスレッド)からBackgroundスレッドを使用して非同期処理を実行し、
- 非同期処理の実行結果をUIスレッドを使用して画面に反映させる事ができる。
Open棟梁の「非同期呼出フレームワーク」がこの方式で実装されている。
async/awaitは、TAP(Task-based Asynchronous Pattern)の方式で実装されている。
Tags: :.NET開発