C++11多线程(十):packaged_task类的用法

        std::packaged_task它包装了一可调用的目标(如function, lambda expression, bind expression, or another function object)以便异步调用,它和promise在某种程度上肴点像,promise保存了状态共享的值,而packaged_task保存的是一个函数。

        使用std::packaged_task需要包含如下头文件

#include
using namespace  std;

        get_future函数

future<_Ret> get_future()
		{	// return a future object that shares the associated
			// asynchronous state
		return (future<_Ret>(_MyPromise._Get_state_for_future(), _Nil()));
		}

   获取与共享状态相关联的std::future对象,在调用该函数之后,两个对象共享相同的共享状态,具体解障如下:

(1)std::packaged_task 对象是异步Provider,它在某一时刻通过调用被包装的任务来设置共享状态的值.

(2)std::future 对象时一个异步返回对象,通过它可以获得共享状态的值, 当然在必要的时候需要等待共享状态标志变为ready.

你可能感兴趣的:(C++多线程与线程池)