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

网站怎么盈利的哪个网站可以做竖屏

网站怎么盈利的,哪个网站可以做竖屏,如何做公司网站网页,网站策划方案案例前言 针对异步调用实现,可以将整体任务分为两个部分:任务的提交和任务结果的获取。通过分离这两个部分可以将任务的执行阶段交给其他线程执行,对于一些耗时任务、阻塞任务来说会提升任务提交线程的任务处理能力。在C11中提供了std::future 和…

前言

        针对异步调用实现,可以将整体任务分为两个部分:任务的提交和任务结果的获取。通过分离这两个部分可以将任务的执行阶段交给其他线程执行,对于一些耗时任务、阻塞任务来说会提升任务提交线程的任务处理能力。在C++11中提供了std::future 和 std::promise两种对象来实现上述需求。

一、双方关系

        对于future和promise的两者关系:future和promise中间维护了一个内存区域(共享状态),该区域是两方进行数据交互的“中间商”。针对一个异步实现过程中,首先有一个异步任务的创建方,也就是异步任务的提交者,它对应future,通过future提供的get方法可以获取异步调用的结果,即从共享状态区域中获取promise存入的数据内容。另一方为异步任务的执行方,它对应promise。通过promise内部对应的set_value方法可以将数据存入共享状态区域,待后续future获取异步任务执行结果。

        从英文含义来看,future:期待/期望 promise:承诺/诺言。future对象期待某些东西,promise会给future一个承诺,即回应他的期待。而共享状态作为promise向future所期待的兑现自己的承诺。

        两者关系图如下:

二、底层实现

​    对于future和promise的底层实现中,根据上图对共享状态有了一个了解。对于双方而言,promise和future之间通过共享状态实现异步信息的传递。该共享状态底层实现与shared_ptr的引用计数相同。当promise被创建之时,会创建一个关联状态对象(state),即共享状态。该关联状态对象内部的计数器初始值为0。此时创建一个future,其构造函数的入参需要一个关联状态对象指针来实现promise和future关联关系的建立。此时一个promise和future的关联关系建立完成。

​    对于future的get使用,future的get方法首先会创建一个unique_ptr指针管理future中的state变量,并创建一个临时指针指向state,然后将future中的state变量置为nullptr,最后返回值返回该临时变量的值,即state中的数据内容。如果此时的关联状态中promise还没添加数据,即此时的共享状态区域中还没有数据,会阻塞当前线程。对于数据是否准备好通过state的状态是否为ready状态判断。因此在使用get时需要注意,get取数据只能调用一次,如果连续调用get会出现异常。因为一个future需要绑定一个state,而当调用get时会取出之前绑定好的state中的数据内容,并将state置为nullptr,如果连续调用,此时state为nullptr就会返回异常。

​    对于promise的set_value使用,promise的set_value方法同理会先检查是否关联了一个state,如果未关联则抛出异常。正常的绑定则进行赋值操作。其中赋值操作可以使用左值版本也可以使用右值版本。对于set_value对state的具体操作为,首先创建一个unique_lock的临时对象上锁,然后判断当前state是否已经被赋值,如果已经赋值的话则抛出异常,如果未赋值则正常进行赋值。然后修改当前state状态为ready状态。最后调用state内部的条件变量,唤醒阻塞在当前state上的线程,即如果future提前进行get操作想要获取state中的数据会进入阻塞,此时promise进行state赋值后会唤醒future。

三、线程安全性

​    对于promise和future的线程安全性分析,应该从共享的部分入手,即state。对于state的使用是否线程安全就决定了future和promise是否线程安全。因此future和promise是线程安全的。

    更多资料:0voice · GitHub


文章转载自:

http://Btsar6sx.mprpx.cn
http://u97YIzdX.mprpx.cn
http://pwRU23kC.mprpx.cn
http://LBEY2f3M.mprpx.cn
http://eQbTHzD0.mprpx.cn
http://htlSTiOJ.mprpx.cn
http://N0JVjUxV.mprpx.cn
http://jy8iTLj5.mprpx.cn
http://KyNPqaOM.mprpx.cn
http://9o7cELfC.mprpx.cn
http://ooxCO0sJ.mprpx.cn
http://89CFjGQ8.mprpx.cn
http://o3b4dQLJ.mprpx.cn
http://0hT3tf1i.mprpx.cn
http://dcZ7BcRs.mprpx.cn
http://9KmjnZaJ.mprpx.cn
http://vQzGCOwY.mprpx.cn
http://Z1Eqmc9E.mprpx.cn
http://ldA6ISyv.mprpx.cn
http://hGPpDlDS.mprpx.cn
http://ZZN1EYRG.mprpx.cn
http://b7lyYfmA.mprpx.cn
http://vqo4X72I.mprpx.cn
http://AnVVBoO3.mprpx.cn
http://1gncR0De.mprpx.cn
http://hUWkqGtG.mprpx.cn
http://Qm2wCrDK.mprpx.cn
http://gpzYiRTv.mprpx.cn
http://CE9QA4t0.mprpx.cn
http://uMn0qCV9.mprpx.cn
http://www.dtcms.com/wzjs/628528.html

相关文章:

  • 安庆网站建设服务网网赌赢了钱被网站黑了需要怎么做
  • 中国空间站组合体114黄页网推广
  • 洛阳市政建设网站百度手机快速排名点击软件
  • 威海网站开发公司电话腾讯qq官网登录入口
  • 淘宝客建站教程做外贸一般去什么网站找客户
  • 百色网站免费建设安监局网站建设
  • ppt设计兼职昆明网站词排名优化
  • 广告传媒公司的网站应该怎么做成功的软文营销案例
  • 网站设计影响seo的因素优秀网站要素
  • 网站如何设置默认首页wordpress去除index.php
  • 20个中国风网站设计欣赏wordpress用户登录显示请求失败
  • 昆明网站建设公司哪家便宜网站建设需要的技术
  • 搞笑网站模板邢台是哪个省的城市
  • 简单个人网站开发代码河北住房建设厅网站
  • 济南网站优化建设郑州网站建设模板
  • 南昌专业的学校网站建设公司拼多多网站怎么做的
  • 自己做网站 服务器焦作企业网站建设
  • 铜仁做网站公司北京市工程建设招标投标交易系统
  • 怎么查看网站有没有做竞价wordpress 网盘主题
  • 建立化妆品网站功能wordpress定义页面带html
  • 做网站php语言用什么工具未来的门户网站
  • 域名注册成功怎么做网站免费vps
  • 免费做个人网站wordpress p=29
  • 网上商城网站设计和实现免费模板ppt下载
  • 深圳高端做网站公司平面设计接单app
  • 怎样建设网站教程网站如何进行品牌建设
  • 成都网站设计服务做门户网站起什么域名好
  • 珠海集团网站建设报价安徽博物馆网站建设的调研报告
  • 湖北交投建设集团有限公司网站优秀国外网站设计赏析
  • 五屏网站建设多少钱河北邯郸做网站的公司