yohhoyの日記

技術的メモをしていきたい日記

async関数launch::asyncポリシーとfutureのちょっと特殊な動作(続きの続き)

async関数launch::asyncポリシーとfutureのちょっと特殊な動作, 同(続き)の続き。

async関数動作でlaunch::asyncポリシーが選択された場合のみ、futureオブジェクトのデストラクタではasync関数が作成した新スレッド完了を待機する。(暗黙的にスレッドjoinが行われる。)

C++11の仕様策定後、上記仕様を削除する案*1や「ブロッキング動作を明示するfuture型」の導入*2async関数ごと非推奨とする案*3などが提案されたが、破壊的な仕様変更案は全て退けられ最終的にC++14 DIS(N3937)では仕様変更されないことが確定した。同時に、async関数とfutureデストラクタの振る舞いが明記される。*4

関連URL