std::promise
时间: 2023-08-15 22:06:56 浏览: 61
std::promise是C++11并发编程中常用的一个类,常配合std::future使用。它的作用是在一个线程中保存一个特定类型的值,供与之绑定的std::future对象在另一个线程中获取。\[1\]
下面是一个示例代码,展示了std::promise的使用方法:
```cpp
#include <iostream>
#include <future>
#include <chrono>
void Thread_Fun1(std::promise<int>& p) {
std::this_thread::sleep_for(std::chrono::seconds(5));
int iVal = 233;
std::cout << "传入数据(int):" << iVal << std::endl;
p.set_value(iVal);
}
void Thread_Fun2(std::future<int>& f) {
auto iVal = f.get();
std::cout << "收到数据(int):" << iVal << std::endl;
}
int main() {
std::promise<int> pr1;
std::future<int> fu1 = pr1.get_future();
std::thread t1(Thread_Fun1, std::ref(pr1));
std::thread t2(Thread_Fun2, std::ref(fu1));
t1.join();
t2.join();
return 0;
}
```
在这个示例中,我们创建了一个std::promise对象pr1,并通过pr1的get_future()函数与一个std::future对象fu1绑定。然后我们创建了两个线程t1和t2,分别执行Thread_Fun1和Thread_Fun2函数。在Thread_Fun1中,我们通过set_value()函数将一个整数值传入pr1。在Thread_Fun2中,我们通过阻塞函数get()获取到了传入的数据,并进行输出。\[2\]
从示例中可以看到,std::promise对象可以保存各种类型的数据,包括函数指针等。\[3\]
#### 引用[.reference_title]
- *1* *2* *3* [[C++11]std::promise](https://blog.csdn.net/weixin_43743711/article/details/115770638)[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^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]