C++11マルチスレッド(九):promise用法詳細


std::promiseは値をパッケージしてデータとfutureをバインドし、スレッド関数の値を取得するのに便利で、値を取るのはpromise内部で提供されたfutureによって間接的に取得されます.promiseの主な目的は「Set」操作を提供し,futureのget()に対応することである.
promiseヘッダファイルは以下の通りです.
#include
using namespace  std;

set_value関数
void set_value(_Ty&& _Val)
		{	// store result
		_MyPromise._Get_state_for_set()._Set_value(
			_STD forward<_ty>(_Val), false);
		}

共有状態の値を設定し、promiseの共有状態フラグがreadyになります.
set_Exception関数
void set_exception(_XSTD exception_ptr _Exc)
		{	// store result
		_MyPromise._Get_state_for_set()._Set_exception(_Exc, false);
		}

promiseに異常を設定し、その後promiseの共有ステータスフラグがreadyになります.