标准C++17
这是一个小型实用的线程,它是跟随C++17异步算法一起发行的。
它的适用场景就是:
当你想在需要获得线程的执行结果时,如果线程已经结束,那么future对象将立即返回线程的结果,否则它将等待线程结束。
它对于自定义的异步算法非常适用。下面看一下代码:
这里使用async开启了一个线程,线程的处理需要1s的时间处理完成。
主线程在3秒后想要获得子线程的处理结果,于是使用get来获取,此时呢,因为future对象的线程已经结束,所以get将立即返回线程的结果。
那么也可以判断线程的状态进行下一步操作,这样可以防止线程在未返回的时候get出现的阻塞。 这里使用wait_for函数来指定等待的超时时间,做出判断,如果在等待的2秒之内,线程结束了,那么我们就可以直接get结果,否则再做其他打算。
还有一种,就是在指定的系统时间内,等待线程的结果:
那么在当当前的系统时间+2秒后的这个时间内,如果线程结束了,调用get来获取结果。