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開発