【可乐教育】C++ 多线程:std::future(可乐vicky学生教)

概念

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

std::future 通常由某个 Provider 创建,你可以把 Provider 想象成一个异步任务的提供者,Provider 在某个线程中设置共享状态的值,与该共享状态相关联的 std::future 对象调用 get(通常在另外一个线程中) 获取该值,如果共享状态的标志不为 ready,则调用 std::future::get 会阻塞当前的调用者,直到 Provider 设置了共享状态的值(此时共享状态的标志变为 ready),std::future::get 返回异步任务的值或异常(如果发生了异常)。

一个有效(valid)的 std::future 对象通常由以下三种 Provider 创建,并和某个共享状态相关联。Provider 可以是函数或者类,他们分别是:

  • std::async 函数std::promise::get_future,get_future 为 promise 类的成员函数std::packaged_task::get_future,此时 get_future为 packaged_task 的成员函数

一个 std::future 对象只有在有效(valid)的情况下才有用(useful),由 std::future 默认构造函数创建的 future 对象不是有效的(除非当前非有效的 future 对象被 move 赋值另一个有效的 future 对象)。

特别声明:[【可乐教育】C++ 多线程:std::future(可乐vicky学生教)] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

父亲是金牌🥇编剧,母亲是演员,她本不用担忧资源,甘愿从龙套做起

父亲在圈内有人脉,可以为她拉资源,但她却不依赖这些,她从小角色做起,北漂了几年,跑组试镜,不挑任何角色。 接下来的几年,肖茵的演艺事业持续开花结果,2015年,她参演了电视剧《大秧歌》中的苏菲娜,扮演战地…

父亲是金牌🥇编剧,母亲是演员,她本不用担忧资源,甘愿从龙套做起

『沈腾』没想到,退出春晚、解散公司、面相大变的贾玲!成了他的劲敌(『沈腾』当场退役)

这一变化引发了观众的关注,但也让一些业内人士觉得,贾玲似乎是在用身体当特效。对于胖版贾玲是否会在影片中通过闪回或段落出现,观众也充满了期待。如果《转念花开》能够完美呈现,贾玲或许能够凭借三部作品,将外界对她的…

『沈腾』没想到,退出春晚、解散公司、面相大变的贾玲!成了他的劲敌(『沈腾』当场退役)

服装造型设计专访|“与其内耗,不如外穿”!(服装造型与设计)

服装造型设计陈钰可以“滞后时空的错乱混搭”为基调,构建出一个被时间遗忘的视觉世界——这里的衣物来自不确定的年代,搭配看似随意却暗含深意,色彩鲜艳却渗透着某种突兀与不安。 为了不影响胡同交通,营造更好的观演环…

服装造型设计专访|“与其内耗,不如外穿”!(服装造型与设计)

『王鹤棣』《大奉打更人》海外爆火,内娱IP要靠他走向世界?(『王鹤棣』耍大牌)

大奉打更人》的海外成功,实际上更像一次有益的试探——当我们学会用世界的语言来讲述中国故事时,也许下一个现象级IP就会如同井喷般出现。或许某一天,当外国观众谈论起打更人宇宙时,我们将会记得2025年初这部充满…

『王鹤棣』《<strong>大奉打更人</strong>》海外爆火,内娱IP要靠他走向世界?(『王鹤棣』耍大牌)

一夜爆红!北美糊咖性感男星因爆剧飞升,离奇经历引网友惊叹?(北美xl)

毕竟《巅峰对决》本身就是加拿大制作,不仅充满本土文化元素,还围绕加拿大的“国球”冰球展开,无形中也成了一次对加拿大形象的集中输出,主演直接被打包成为加拿大文化输出大使。 1月16日,哈德森受邀去了米兰『时装周』…

一夜爆红!北美糊咖性感男星因爆剧飞升,离奇经历引网友惊叹?(北美xl)