std::promise 解释下这个
时间: 2023-08-19 15:05:12 浏览: 124
`std::promise` 是 C++11 标准库中的一个类,它是一种线程间同步的机制,用于在一个线程中产生某个值或者异常,并在另一个线程中获取该值或异常,也可以将该值或异常绑定到一个 `std::future` 对象上,方便后续异步获取该值或异常。
`std::promise` 对象一般通过 `std::promise::get_future()` 方法获取一个 `std::future` 对象,然后在另一个线程中调用该 `std::future` 对象的 `get()` 方法即可获取 `std::promise` 对象中设置的值或异常。
`std::promise` 对象可以通过 `std::promise::set_value()`、`std::promise::set_exception()` 方法设置一个值或异常,也可以通过 `std::promise::set_value_at_thread_exit()`、`std::promise::set_exception_at_thread_exit()` 方法在当前线程退出时设置一个值或异常。
相关问题
std::future std::promise
std::future是一个模版类,用于获取异步操作的结果。它是不可拷贝对象,类似于std::unique_ptr,具有对所管理的资源的独占权。通过std::future,你可以从std::promise获得相应的值,询问std::promise是否将值设置为可用,等待std::promise的通知,可以设置一个相对时间间隔或绝对时间,还可以创建一个共享的future(std::shared_future)。
std::promise是用于在多线程编程中实现单向数据传递的一种方式。它是数据的输入端,而std::future则是数据的输出端。通过std::promise和std::future,可以在不同的线程之间传递数据。
总结来说,std::future和std::promise是用于在多线程环境下进行数据传递和同步的重要工具。std::future用于获取异步操作的结果,而std::promise用于将数据传递给std::future。它们在C++中提供了一种方便且安全的方式来处理多线程间的数据共享和通信。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [c++11 多线程之future和promise](https://blog.csdn.net/weixin_44834554/article/details/127515771)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
std::future和std::promise
b的std::future和std::promise是C++11中的两个重要的多线程工具。std::promise是用于异步操作的可调用对象,它可以把结果传递给一个std::future对象,而std::future就是将来某个时候可以获取这个异步操作的结果。通过使用std::promise和std::future可以方便地进行异步任务的编写和管理,从而提高程序的效率。
阅读全文