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

电影网站怎么做关键词海口 做网站

电影网站怎么做关键词,海口 做网站,ui设计网站,房地产建筑设计公司C11异步编程 — async和future C11引入了async和future机制&#xff0c;用于简化异步编程和并发操作。这两个组件位于<future>头文件中&#xff0c;提供了高级的异步任务管理接口。 一、async 1.定义 std::async std::async是一个函数模板&#xff0c;用于启动一个异…

C++11异步编程 — async和future

C++11引入了asyncfuture机制,用于简化异步编程和并发操作。这两个组件位于<future>头文件中,提供了高级的异步任务管理接口。

一、async

1.定义

std::async

std::async是一个函数模板,用于启动一个异步任务。它返回一个std::future对象,该对象可以用来获取异步任务的结果。std::async的执行方式可以通过std::launch策略来控制。如下:

future<int> myf = async(launch::async,Func,20,30);

2.主要功能

①启动一个异步任务,返回一个future对象。

②启动策略:

EXPORT_STD enum class launch { // names for launch options passed to asyncasync    = 0x1,deferred = 0x2
};

launch::async :强制在新线程中启动异步任务。

launch::deferred:延迟执行,只有当future的get()或者wait函数被调用时,任务才会在调用线程中执行。

默认策略(不指定) - 由实现决定,可能是异步或延迟

二、future

1.定义:

future是一个类模板,用于存储异步执行结果,它提供了一种机制,允许用户在某个异步操作完成时获取其结果。std::future对象可以与线程、异步任务或其他并发操作相关联。

2.主要功能

①通过std::futureget()方法,可以获取异步操作的结果。如果异步操作尚未完成,get()会阻塞当前线程,直到结果可用。

②它提供了以下主要方法:

  1. get() - 获取结果(如果结果未准备好会阻塞)
  2. wait() - 等待结果可用(阻塞但不获取结果)
  3. wait_for()/wait_until() - 带超时的等待
  4. valid() - 检查future是否关联了共享状态

三、 std::asyncstd::future的使用场景

1.异步任务处理:适用于需要在后台执行耗时操作,而主线程可以继续执行其他任务的场景。

2.多线程数据共享:通过std::future获取异步任务的结果,避免了直接使用线程时可能出现的线程同步问题。

3.简化并发编程:提供了一种简洁的方式来实现异步任务的启动和结果获取,降低了并发编程的复杂性。

四、注意事项:

1.如果不保留async返回的future对象,其析构函数会阻塞等待任务完成(类似于隐式join)。

2.线程安全:std::futurestd::async是线程安全的,但用户需要确保在使用std::futureget()方法时,不会出现对同一std::future对象的多次调用,future::get()只能调用一次,调用后future变为无效。

3.资源管理:std::future对象在析构时会自动销毁关联的异步任务,但如果任务尚未完成,可能会导致资源泄漏或未定义行为。

4.性能考虑:虽然std::async可以自动选择执行策略,但在某些情况下,显式指定std::launch::asyncstd::launch::deferred可以更好地控制任务的执行方式,从而优化性能。

示例代码:

#include <iostream>
#include<thread>
#include<future>
using namespace std;int Func(int a,int b)
{cout << "Sub thread ID:" << this_thread::get_id() << endl;cout << "this is MyFunc" << endl;return a + b;
}int main()
{future<int> myf = async(launch::async,Func,20,30);cout <<"Main Thread Id:"<< this_thread::get_id() << endl;myf.wait();cout<<"myf == " << myf.get()<< endl; std::cout << "Hello World!\n";
}

代码运行结果:

微信截图_20250513231841

好了,关于async和future的介绍就到这里了。


文章转载自:

http://CCSbi8Vj.tbqdm.cn
http://C6LJCsCU.tbqdm.cn
http://iBxvWBy5.tbqdm.cn
http://PmqEIkyU.tbqdm.cn
http://lKRv5TdA.tbqdm.cn
http://iKA7ZxU8.tbqdm.cn
http://i2eURsY5.tbqdm.cn
http://IA7TFBHx.tbqdm.cn
http://y75ZaeJ0.tbqdm.cn
http://aqPjVI7g.tbqdm.cn
http://PGDmZmnn.tbqdm.cn
http://4pC1z0eq.tbqdm.cn
http://rvduYvdy.tbqdm.cn
http://uHEe3fNY.tbqdm.cn
http://asTb3M8J.tbqdm.cn
http://EP92HL6M.tbqdm.cn
http://7Dx1n2eh.tbqdm.cn
http://Qi5t4uiP.tbqdm.cn
http://YpQEdPaM.tbqdm.cn
http://xwvjhGON.tbqdm.cn
http://4kQBtL1B.tbqdm.cn
http://lUBSMaKS.tbqdm.cn
http://9kRRBezl.tbqdm.cn
http://Jm4nnK8d.tbqdm.cn
http://e2cZEGcH.tbqdm.cn
http://zcvh9lcz.tbqdm.cn
http://1MTPTxDD.tbqdm.cn
http://x60JKVP3.tbqdm.cn
http://ZZlwC4UC.tbqdm.cn
http://TxQ6T0yf.tbqdm.cn
http://www.dtcms.com/wzjs/774316.html

相关文章:

  • 苏州企业如何建站网上开店货源怎么找
  • 邢台网站开发公司360推广
  • 顺德新网站建设如何百度到自己的网站
  • 网络宣传网站建设定制工程建设标准
  • 希爱力双效片副作用太原seo按天计费
  • 黄页88网宁波企业名录seo公司后付费
  • saas建站没有网站源代码么菏泽网站制作
  • 做本地分类信息网站赚钱吗网页设计电脑配置推荐
  • 网站建设方案免费企业解决方案业务是什么
  • 做企业网站 排名兴宁市住房和城乡规划建设局网站
  • 中小企业是用什么来做网站的开发的创意策划网站
  • 天河网站建设网络推广青岛百度seo排名
  • wordpress %2$swindows优化大师最新版本
  • 大学网站建设技术方案东莞seo建站推广费用
  • 宜州网站建设服务网站后台怎么修改文字
  • 如何建设公司网站知乎东莞网站推广春
  • 网站设计合同模板做英语手抄报 什么网站
  • 网站建设doc建设网站团队
  • 如何自己创建网站教程代理网站备案收钱
  • 深圳做网站找哪家好口碑好网站建设开发
  • 网站做关键词搜索要好多钱百度指数是什么
  • 建设手机网站包括哪些费用吗高端网站建设哪个好
  • 棋牌网站搭建平台网站平台建设的当前问题
  • 做百度移动端网站排名软件网站建设需求分析表怎么写
  • 卖网站链接ppt做的好的有哪些网站有哪些
  • 许昌市做网站网站建设推广代理公司
  • 网站开发怎么做浙江省建筑信息港
  • 怎么做网站排版如何做网站效果更好
  • 品牌网站建设公如何自己做官网首页
  • 个人电子商务网站 制作e时代速递搜索引擎网站建设