Open棟梁Project - マイクロソフト系技術情報 Wiki
目次 †
概要 †
- スレッド
スレッドの並列実行はOSが裏で無意識にしてくれていたが、
- タイムスライスで細切れ/ラウンドロビンで論理的に並列実行。
- コア数に応じて、物理的に並列実行。
- タスク
awaitを切れ目として、プログラマが意識してプログラムを区切る。
スレッド同期 †
タスクなので、一連の処理が、同じスレッドで実行される保証は無く、
旧来的な意味でのlockは無意味だし、そもそも実現不能/使用不可能。
- lock/mutex/semaphoreはtaskで全て使用禁止
- WIN32系同期APIのうち、待機関数のWaitFor?[Single|Multi]Objectは例外的に使用可能。
サマリ †
- async/awaitの登場で、同期型処理と、ほぼ変わらない記述が可能になった。
- しかし、デバッグの時は非同期で実行されていることを意識する必要がある。
参考 †