promise 类
介绍异步提供程序。
template <class Ty>
class promise;
名称 | 描述 |
---|---|
promise | 构造 promise 对象。 |
名称 | 描述 |
---|---|
get_future | 返回与此 promise 关联的 future。 |
set_exception | 以原子方式设置此 promise 的结果以指示异常。 |
set_exception_at_thread_exit | 以原子方式设置此 promise 的结果以指示异常,并且仅在销毁当前线程中的所有线程本地对象后(通常在线程退出时)发出通知。 |
set_value | 以原子方式设置此 promise 的结果以指示值。 |
set_value_at_thread_exit | 以原子方式设置此 promise 的结果以指示值,并且仅在销毁当前线程中的所有线程本地对象后(通常在线程退出时)发出通知。 |
swap | 用指定的 promise 对象的关联的异步状态交换此 promise 的关联的异步状态。 |
“属性” | 描述 |
---|---|
promise::operator= | 此 promise 对象的共享状态的分配。 |
promise
标头:<future>
命名空间: std
返回具有与此 promise 相同的关联异步状态的 future 对象。
future<Ty> get_future();
如果 promise 对象为空,则此方法将引发一个 error_code 为 no_state
的 future_error。
如果此方法已调用具有相同关联异步状态的承诺对象,则此方法将引发 future_error
为 error_code
的 future_already_retrieved
。
从指定的 promise
对象传输关联异步状态。
promise& operator=(promise&& Other) noexcept;
其他
promise
对象。
*this
此运算符从 Other 传输关联异步状态。 传输后,Other 为空。
构造 promise
对象。
promise();
template <class Alloc>
promise(allocator_arg_t, const Alloc& Al);
promise(promise&& Other) noexcept;
Al
内存分配器。 有关分配器的详细信息,请参阅 <allocators>。
其他
promise
对象。
第一个构造函数构造空promise
对象。
第二个构造函数构造一个空 promise
对象,并使用 Al 实现内存分配。
第三个构造函数构造 promise
对象并从 Other 传输关联异步状态,同时将 Other 留空。
以原子方式将异常存储为此 promise
对象的结果,并将“关联的异步状态”设置为“就绪”。
void set_exception(exception_ptr Exc);
Exc
通过此方法另存为异常结果的 exception_ptr。
如果 promise
对象没有关联的异步状态,则此方法将引发具有错误代码 no_state
的 future_error。
如果已为具有相同的关联异步状态的 promise
对象调用 set_exception
、set_exception_at_thread_exit、set_value 或 set_value_at_thread_exit,则此方法将引发具有错误代码 promise_already_satisfied
的 future_error
。
此方法的结果是,不再阻止在关联的异步状态上受阻的任何线程。
以原子方式设置此 promise
的结果以指示异常,并且仅在当前线程中的所有线程本地对象被销毁后(通常在线程退出时)发出通知。
void set_exception_at_thread_exit(exception_ptr Exc);
Exc
通过此方法另存为异常结果的 exception_ptr。
如果 promise 对象没有关联的异步状态,则此方法将引发具有错误代码 no_state
的 future_error。
如果已为具有相同的关联异步状态的 promise
对象调用 set_exception、set_exception_at_thread_exit
、set_value 或 set_value_at_thread_exit,则此方法将引发具有错误代码 promise_already_satisfied
的 future_error
。
与 set_exception 相反,此方法在当前线程中的所有线程本地对象被销毁前不会将关联的异步状态设置为“就绪”。 通常,在关联的异步状态上受阻的线程直到当前线程退出才会取消阻止。
以原子方式将值存储为此 promise
对象的结果,并将“关联的异步状态”设置为“就绪”。
void promise::set_value(const Ty& Val);
void promise::set_value(Ty&& Val);
void promise<Ty&>::set_value(Ty& Val);
void promise<void>::set_value();
Val
要存储为结果的值。
如果 promise
对象没有关联的异步状态,则此方法将引发具有错误代码 no_state
的 future_error。
如果已为具有相同的关联异步状态的 promise
对象调用 set_exception、set_exception_at_thread_exit、set_value
或 set_value_at_thread_exit,则此方法将引发具有错误代码 promise_already_satisfied
的 future_error
。
此方法的结果是,不再阻止在关联的异步状态上受阻的任何线程。
第一种方法还会引发在将 Val 复制到关联的异步状态时所引发的任何异常。 在这种情况下,关联的异步状态不设置为“就绪”。
第二种方法还会引发在将 Val 移动到关联的异步状态时引发的任何异常。 在这种情况下,关联的异步状态不设置为“就绪”。
对于部分专用化 promise<Ty&>
,存储的值实际上是对 Val 的引用。
对于专用化 promise<void>
,不存在任何存储的值。
以原子方式将值存为此 promise
对象的结果。
void promise::set_value_at_thread_exit(const Ty& Val);
void promise::set_value_at_thread_exit(Ty&& Val);
void promise<Ty&>::set_value_at_thread_exit(Ty& Val);
void promise<void>::set_value_at_thread_exit();
Val
要存储为结果的值。
如果 promise 对象没有关联的异步状态,则此方法将引发具有错误代码 no_state
的 future_error。
如果已为具有相同的关联异步状态的 promise
对象调用 set_exception、set_exception_at_thread_exit、set_value 或 set_value_at_thread_exit
,则此方法将引发具有错误代码 promise_already_satisfied
的 future_error
。
与 set_value
相反,在当前线程中的所有线程本地对象被销毁前不会将关联的异步状态设置为“就绪”。 通常,在关联的异步状态上受阻的线程直到当前线程退出才会取消阻止。
第一种方法还会引发在将 Val 复制到关联的异步状态时所引发的任何异常。
第二种方法还会引发在将 Val 移动到关联的异步状态时引发的任何异常。
对于部分专用化 promise<Ty&>
,存储的值实际上是对 Val 的引用。
对于专用化 promise<void>
,不存在任何存储的值。
将此 promise 对象的关联异步状态与指定对象的交换。
void swap(promise& Other) noexcept;
其他
promise
对象。