
256
|
7 章 並行 API
•
開発者がアプリケーションのスレッド使用を最適化でき、またそうする必要がある
例えば、特定の性質を持つハードウェアマシン上で、重要プロセスにのみ実行プロファイル
を指定、適用するようなサーバソフトウェア開発などが該当する。
•
C++ 並行 API を越えたスレッド技術を実装する必要がある
使用する C++ 処理系では実装していないスレッドプールなど。
しかし、これらはあまり発生しない状況です。ほとんどの場合は、スレッドを直接用いたプログ
ラミングではなく、タスクベースの設計を採用すべきです。
重要ポイント
•
std::thread API では、非同期に実行する関数の戻り値を得る方法が存在しない。また、非
同期に実行する関数が例外を発生させるとプログラムは終了する。
•
スレッドベースのプログラミングでは、スレッド数、オーバサブスクリプション、ロードバラ
ンスの手動管理が必要になる。また、新規プラットフォームへの移行時にも作業が発生する。
•
ディフォルトのローンチポリシで動作する std::async を用いたタスクベースのプログラミ
ングでは、上記問題の大部分に自動的に対応する。
項目 36:非同期性が不可欠の場面では std::launch::async を指定
する
std::async を用い関数を実行するのは(または呼び出し可能オブジェクト)、通常はその関数を
非同期に実行する意図があってのことです。しかし、必ずしもそのように指定しなくとも構いませ
ん。実際には、関数の実行は ...