future模板类定义了一种异步返回对象的类型,但不能和其他异步返回对象共享其共享状态。一个默认构造的future类型对象没有共享状态。具有共享状态的future类型对象可以通过异步函数创建,也可以通过移动式构造和共享其共享状态。future类型对象可以通过相关的函数设置其结果值,并共享同一共享状态。
调用成员函数(析构函数、赋值符号=、valid()等除外)的作用是不确定的。
该类的声明形式如下:
上述类声明包含了两个有效的构造函数、一个析构函数、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的详细定义
例16-20
例16-20的执行效果如图16-21所示。
图16-21 例16-20的执行效果
注意
例16-20分别用5个线程和异步函数对模板类future的各个成员函数的使用方法进行了说明。此例题有助于读者理解模板类future。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。