使用C++11多线程获得值的方法有多种,下面是其中一种常见的方法:
<thread>
头文件,以便使用多线程相关的类和函数。myThread
的线程对象,并将要执行的函数命名为 myFunction
。std::promise
和 std::future
来传递值。std::promise
用于设置值,std::future
用于获取值。std::promise
对象的 set_value
方法来设置值。std::future
对象的 get
方法来获取值。这将阻塞主线程,直到值被设置为止。下面是一个示例代码:
#include <iostream>
#include <thread>
#include <future>
void myFunction(std::promise<int>& promiseObj) {
// 模拟一些耗时操作
std::this_thread::sleep_for(std::chrono::seconds(2));
// 设置值
int value = 42;
promiseObj.set_value(value);
}
int main() {
// 创建 promise 和 future 对象
std::promise<int> promiseObj;
std::future<int> futureObj = promiseObj.get_future();
// 创建线程并执行函数
std::thread myThread(myFunction, std::ref(promiseObj));
// 获取值
int value = futureObj.get();
// 输出值
std::cout << "Value: " << value << std::endl;
// 等待线程结束
myThread.join();
return 0;
}
这段代码创建了一个线程 myThread
,并在该线程中执行函数 myFunction
。在 myFunction
中,我们使用 std::promise
对象设置值为 42。在主线程中,我们通过 std::future
对象获取该值,并输出到控制台。
腾讯云提供了一系列云计算相关的产品,如云服务器、云数据库、云存储等。具体推荐的产品取决于具体的应用场景和需求。你可以访问腾讯云官方网站(https://cloud.tencent.com/)了解更多关于腾讯云的产品和服务。
领取专属 10元无门槛券
手把手带您无忧上云