当前位置: 首页 > news >正文

做58同城这样的网站wordpress 插件提示

做58同城这样的网站,wordpress 插件提示,云南专业网站建设,国内it培训机构排名std::future std::future 简介示例1博客引用来源 std::future 简介 我们前面介绍的std::thread 是C11中提供异步创建多线程的工具,只能是异步运行任务,却无法获取任务执行的结果,一般都是依靠全局对象,全局对象在多线程下是及其不…

std::future

  • std::future 简介
  • 示例1
  • 博客引用来源

std::future 简介

我们前面介绍的std::thread 是C++11中提供异步创建多线程的工具,只能是异步运行任务,却无法获取任务执行的结果,一般都是依靠全局对象,全局对象在多线程下是及其不安全的,为此标准库提供了std::future类模板来关联线程运行的函数和函数的返回结果,这种获取结果的方式是异步的。
本质上线程支持库。

std::futureC++ 线程支持库 std::future 
定义于头文件 <future>
template< class T > class future;(1)	(C++11 起)
template< class T > class future<T&>;(2)	(C++11 起)
template<>          class future<void>;(3)	(C++11 起)

类模板 std::future 提供访问异步操作结果的机制:

  • (通过 std::async 、 std::packaged_task 或 std::promise 创建的)异步操作能提供一个 std::future 对象给该异步操作的创建者。
  • 然后,异步操作的创建者能用各种方法查询、等待或从 std::future 提取值。若异步操作仍未提供值,则这些方法可能阻塞。
  • 异步操作准备好发送结果给创建者时,它能通过修改链接到创建者的 std::future 的共享状态(例如 std::promise::set_value )进行。

注意, std::future 所引用的共享状态不与另一异步返回对象共享(与 std::shared_future 相反)。

在这里插入图片描述
引用:std::future

示例1

#include <iostream>
#include <future>
#include <thread>int main()
{// 来自 packaged_task 的 futurestd::packaged_task<int()> task([](){ return 7; }); // 包装函数std::future<int> f1 = task.get_future();  // 获取 future//std::cout << "Done!\nResults are: "<< f1.get() << '\n';std::thread(std::move(task)).detach(); // 在线程上运行// 来自 async() 的 futurestd::future<int> f2 = std::async(std::launch::async, [](){ return 8; });//std::cout << "Done!\nResults are: " << f2.get() << '\n';// 来自 promise 的 futurestd::promise<int> p;std::future<int> f3 = p.get_future();std::thread( [&p]{ p.set_value_at_thread_exit(9); }).detach();std::cout << "Waiting..." << std::flush;f1.wait();f2.wait();f3.wait();std::cout << "Done!\nResults are: "<< f1.get() << ' ' << f2.get() << ' ' << f3.get() << '\n';
}

在这里插入图片描述
示例2

#include <iostream>       // std::cout
#include <future>         // std::async, std::future
#include <utility>        // std::moveint do_get_value() { return 11; }int main () {// 由默认构造函数创建的 std::future 对象,// 初始化时该 std::future 对象处于为 invalid 状态.std::future<int> foo, bar;foo = std::async(do_get_value); // move 赋值, foo 变为 valid.bar = std::move(foo); // move 赋值, bar 变为 valid, 而 move 赋值以后 foo 变为 invalid.if (foo.valid()) {std::cout << "foo's value: " << foo.get() << '\n';} else {std::cout << "foo is not valid\n";}if (bar.valid()) {std::cout << "bar's value: " << bar.get() << '\n';} else {std::cout << "bar is not valid\n";}return 0;
}

在这里插入图片描述

博客引用来源

  • 胖小迪 C++ 多线程:std::future
http://www.yayakq.cn/news/793824/

相关文章:

  • 网站参考页面设计网页制作与网站建设题
  • 通化市网站建设广州最近传染病情况
  • 网站建设使用的什么企业做网上推广
  • 灵犀科技网站开发四川省工程信息造价网
  • 建设网站的工作网站建设Skype打不开
  • 网络营销中网站的目的是网上做设计的网站有哪些
  • 服装服饰设计网站最全黄页
  • 建设网站项目概况买了域名后怎么建立网址
  • 老榕树智能建站系统四川省建筑人才网
  • 做同城网站建设班级网站首页
  • linux tomcat 网站目录wordpress分享到快手
  • 电脑做网站怎么解析域名网上电商平台怎么注册
  • 南京网站设计哪家好云安区市场网络营销方法
  • 试用网站cmsyw52777最新跳转接口
  • 小学生制作书签关于华大18年专注seo服务网站制作应用开发
  • 无棣做网站九一人才网手机版
  • 网站建设需要编程吗网站ico图标怎么用
  • 怎么建电子商务网站设计类专业哪个学校好
  • 温江网站建设织梦网网站建设
  • 做网站的流程是什么搜集关键词的网站
  • dw怎么做网站布局代理网页 国外
  • 专业科技公司网站欣赏昆明餐饮网站建设
  • 烟台做网站的公司可以做点赞的网站赚钱
  • 金顶街网站建设做网站百度收录
  • 微信网站全称快照不更新怎么办
  • 永康企业网站建设苏州市住房和城乡建设局官方网站
  • 网络公司除了做网站怎样做免费的网站推广
  • 东营市报名系统网站设计公司深圳住房和建设局网站 招标
  • 闵行交大附近网站建设教你如何做好网站
  • 如何用c语言做网站深圳网站建设seo优化