c++中的std::shared_future是什么_c++广播异步结果【多线程】

admin 百科 15
std::shared_future用于多线程安全共享同一异步结果,解决std::future不可拷贝、独占使用的问题;可通过future::share()获得,支持多线程并发get()且线程安全。

c++中的std::shared_future是什么_c++广播异步结果【多线程】-第1张图片-佛山资讯网

std::shared_future 是 C++11 引入的、用于在多个线程间**安全共享同一个异步结果**的工具,它解决了 std::future 只能移动、不可复制的问题。

为什么需要 shared_future?

普通 std::future 是“独占型”的:一旦被 get()wait(),就不能再被其他对象使用;而且它不可拷贝(只支持移动)。这在需要多个线程等待或读取同一异步结果时很不方便。

std::shared_future 允许你从一个 future 创建多个可拷贝的副本,每个副本都能独立调用 get()wait()valid() 等操作,且行为一致(比如都阻塞到结果就绪,都返回相同值)。

怎么得到 shared_future?

不能直接构造,必须通过以下方式获得:

立即学习“C++免费学习笔记(深入)”;

  • 调用 std::future::share() —— 把一个 future 转成 shared_future(原 future 失效)
  • std::asyncstd::packaged_taskstd::promise 获取的 future,立即调用 share()

示例:

标签: 工具 ai c++ 异步任务 为什么 red

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~