您的位置:首页 > 财经 > 产业 > 黄骅市属于哪个市_天津百度推广网络科技公司_泰安seo_网站死链检测工具

黄骅市属于哪个市_天津百度推广网络科技公司_泰安seo_网站死链检测工具

2025/1/11 22:51:10 来源:https://blog.csdn.net/zg260/article/details/144919949  浏览:    关键词:黄骅市属于哪个市_天津百度推广网络科技公司_泰安seo_网站死链检测工具
黄骅市属于哪个市_天津百度推广网络科技公司_泰安seo_网站死链检测工具

一:概述

        std::promise 和 std::future 是C++标准库的两种工具,主要用于实现线程之间的异步通信。它们属于C++并发库的一部分,提供了一种安全,优雅的方式来在线程之间传递结果或状态。

二:std::promise 介绍

        std::promise 用于在线程之间传递值或状态,是一种能够在一个线程中存储值(或异常)的对象。

        常用方法有以下几种:

        set_value(value)  设置异步操作的结果,通知关联的std::future. 

        set_exception(ex) 设置一个异常,通知关联的 std::future 发生错误

        get_future() 获取该 promise 关联的 future 对象,用于结果的获取

三:std::future 介绍

        std::future 提供了一个从异步任务中获取值的机制,它是一个可以从另一个线程获取值(或异常)的对象。

      常用方法有以下几种:

      get()    获取异步任务的结果(如果有异常会抛出)

      wait()  阻塞当前线程,直到异步任务完成。

      wait_for() 等待指定的时间,返回任务是否完成(非阻塞)

      valid() 检查 future 是否有效,表示是否能获取结果。 

四:例子

#include <iostream>
#include <future>
#include <thread>
#include <chrono>using namespace std::literals::chrono_literals; void getAnswer(std::promise<int> intPromise)
{std::this_thread::sleep_for(5s);intPromise.set_value(10);
}int main()
{std::promise<int> answerPromise;auto fut = answerPromise.get_future();std::thread workerThread(getAnswer, std::move(answerPromise)); std::future_status status{};do{status = fut.wait_for(0.5s);std::cout << "main thread doing something..." << '\n';} while (status != std::future_status::ready);std::cout << "answer: " << fut.get() << '\n';workerThread.join();return 0; 
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com