首页 理论教育 模板类future:C++STL精解

模板类future:C++STL精解

时间:2023-10-25 理论教育 版权反馈
【摘要】:future类型对象可以通过相关的函数设置其结果值,并共享同一共享状态。2)share()函数用于返回一个shared_future类型对象。对于默认构造的fu-ture类型对象(未赋值),函数返回false。表16-2 future_status的详细定义例16-20例16-20的执行效果如图16-21所示。图16-21 例16-20的执行效果注意例16-20分别用5个线程和异步函数对模板类future的各个成员函数的使用方法进行了说明。此例题有助于读者理解模板类future。

模板类future:C++STL精解

future模板类定义了一种异步返回对象的类型,但不能和其他异步返回对象共享其共享状态。一个默认构造的future类型对象没有共享状态。具有共享状态的future类型对象可以通过异步函数创建,也可以通过移动式构造和共享其共享状态。future类型对象可以通过相关的函数设置其结果值,并共享同一共享状态。

调用成员函数(析构函数、赋值符号=、valid()等除外)的作用是不确定的。

该类的声明形式如下:

978-7-111-51399-5-Chapter16-94.jpg

上述类声明包含了两个有效的构造函数、一个析构函数、share()函数、get()函数、valid()函数、wait()函数、wait_for()函数以及wait_until()函数。

下面逐一讲述各函数的用法:

1)构造函数future()和future(future&&)用于构造该类型的对象,赋值符号(operator=)主要用于给该类的对象赋值。

2)share()函数用于返回一个shared_future类型对象。

3)get()函数。当共享状态是“ready”时,该函数返回存储在共享状态中的值。

4)valid()函数用于判断该future类型对象是否和某共享状态关联。对于默认构造的fu-ture类型对象(未赋值),函数返回false。如果函数是紧跟get()函数被调用,函数也返回false。

5)wait()函数用于等待共享状态至“ready”状态,若共享状态不是“ready”,则程序被阻塞直至共享状态变为“ready”。wait_for()函数在时间段内等待状态变为“ready”;wait_until()函数是在某时刻之前等待状态变为“ready”。

future_status的详细定义见表16-2。(www.xing528.com)

16-2 future_status的详细定义

978-7-111-51399-5-Chapter16-95.jpg

例16-20

978-7-111-51399-5-Chapter16-96.jpg

978-7-111-51399-5-Chapter16-97.jpg

例16-20的执行效果如图16-21所示。

978-7-111-51399-5-Chapter16-98.jpg

图16-21 例16-20的执行效果

注意

例16-20分别用5个线程和异步函数对模板类future的各个成员函数的使用方法进行了说明。此例题有助于读者理解模板类future。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈