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

网站开发兼职群郑州专业网站建设公司

网站开发兼职群,郑州专业网站建设公司,烟台网站建设 熊掌号,安阳免费搭建自己的网站目录 1--std::async的使用 2--std::packaged_task的使用 3--std::promise的使用 1--std::async的使用 std::async用于启动一个异步任务,并返回一个std::future对象;std::future对象里含有异步任务线程入口函数的结果; std::launch::deferr…

目录

1--std::async的使用

2--std::packaged_task的使用

3--std::promise的使用


1--std::async的使用

        std::async用于启动一个异步任务,并返回一个std::future对象;std::future对象里含有异步任务线程入口函数的结果;

        std::launch::deferred 表示调用线程入口函数将会被延迟到 std::future 的 wait() 或 get() 调用,当 wait() 或者 get() 没有被调用时,线程入口函数不会被调用(线程不会被创建);

#include <iostream>
#include <thread>
#include <mutex>
#include <future>class Sample{
public:// 线程入口函数int thread(int value){std::cout << "thread id: " << std::this_thread::get_id() << std::endl;std::chrono::microseconds dura(value); // reststd::this_thread::sleep_for(dura);return 5;}};int main(int argc, char *argv[]){Sample sample;int value = 5000;// std::async用于启动一个异步任务,并返回一个std::future对象// std::future对象里含有异步任务线程入口函数的结果std::cout << "thread id: " << std::this_thread::get_id() << std::endl;std::future<int> result = std::async(&Sample::thread, &sample, value);// std::launch::deferred 表示调用线程入口函数将会被延迟到 std::future 的wait()或get()调用// 当wait()或者get()没有被调用时,线程入口函数不会被调用(线程不会被创建)// std::future<int> result = std::async(std::launch::deferred, &Sample::thread, &sample, value);// result.get()等待thread()执行完毕获取结果后,主线程才继续往下执行std::cout << "resule.get(): " << result.get() << std::endl; // result.wait() // 等待线程返回,但不返回结果std::cout << "main thread continue ..." << std::endl;return 0;
}

2--std::packaged_task的使用

        std::packaged_task 用于打包任务,其包装各种可调用对象,方便后续作为线程入口函数;

#include <iostream>
#include <thread>
#include <mutex>
#include <future>// 线程入口函数
int thread(int value){std::cout << "thread id: " << std::this_thread::get_id() << std::endl;std::chrono::microseconds dura(value); // reststd::this_thread::sleep_for(dura);return 5;
}int main(int argc, char *argv[]){// std::packaged_task 用于打包任务,其包装各种可调用对象,方便后续作为线程入口函数std::cout << "thead id: " << std::this_thread::get_id() << std::endl;std::packaged_task<int(int)> mypt(thread);int value = 5000;std::thread thread1(std::ref(mypt), value);thread1.join();std::future<int> result = mypt.get_future();std::cout << "result.get(): " << result.get() << std::endl;return 0;
}

3--std::promise的使用

        std::promise 用于在其他线程中使用某个线程中的值;在下面的实例代码中,thread2 使用了 thread1 中的 result 值;

#include <iostream>
#include <thread>
#include <mutex>
#include <future>// 线程入口函数
int thread(std::promise<int> &tmpp, int clac){clac++;clac *= 10; std::cout << "thread id: " << std::this_thread::get_id() << std::endl;int result = clac;tmpp.set_value(result);return 0;
}void thread_2(std::future<int> &tmpf){auto result2 = tmpf.get();std::cout << "tmpf.get(): " << result2 << std::endl;
}int main(int argc, char *argv[]){// std::promise 用于在某个线程中赋值,并在其他线程中将值取来用std::cout << "thead id: " << std::this_thread::get_id() << std::endl;std::promise<int> prom; int clac = 1;std::thread thread1(thread, std::ref(prom), clac);thread1.join();// 将promise中的值取来用std::future<int> result = prom.get_future();std::thread thread2(thread_2, std::ref(result));thread2.join();return 0;
}

http://www.yayakq.cn/news/176159/

相关文章:

  • 门户网站改版企业网站开发文献综述
  • 注册公司需要注意什么事项徐州seo外包平台
  • 有哪些企业可以做招聘的网站有哪些内容价格网如何查产品价格
  • qq官方网站登录入口网站建设公司的方案模板
  • 深圳网站建设设计公司商业网站建设方案
  • 青岛市城市建设管理局网站绵阳学校网站建设
  • 做网站如何通过流量赚钱吗软件开发是怎么开发的啊
  • 非法网站开发者刑事责任创意产品设计网
  • 这样做自己公司的网站沈阳seo
  • 域名命名网站建设网站的建设费用包括什么科目
  • python做软件的网站58同城推广技巧
  • 云服务器可以做图片外链网站吗iis下建多个网站
  • 网站运营推广该如何做商城网站建设是 什么
  • 用外链技术做视频网站四川省建设厅网站填报获奖
  • 学院网站建设作用广州微网站建设市场
  • discuz网站模板下载器网站建设奖项
  • 第三方做农产品价格数据的网站网站评论怎么做
  • 藁城专业网站建设网页版传奇合击
  • html5 做网站佛山市seo网站设计哪家好
  • 网站免费申请化妆品购物网站排名
  • 做网站建设与推广企业wordpress多张页面左右翻
  • 赣州网站建设江西网站建设对网站做数据统计的目的是什么意思
  • 怎么用自己注册的域名做网站健康网站可以做推广吗
  • 论文收录网站有哪些如何建立网站站点
  • 百度建网站多少钱传奇网
  • 成熟网站开发单位如何在微信内做网站
  • 怎么建设免费网站优秀网站设计的标准
  • 网站建设哪家效果好自己制作个人网站
  • 慈溪企业网站建设下载app安装
  • 你访问的网站正在建设网站预订功能怎么做