0 引言
本文主要讲解C++11/14/17中所提供的应用于多线程编程中的Task机制。
Task可由如下几部分取得
- std::async
- std::packaged_task
- std::promise和std::future
而本文主要讲解std::promise和std::future相关的内容。
std::promise和std::future通过一个数据管道进行交流,可以将std::promise看作生产者,std::future看作消费者,其两者形成如下的方式交互
1 std::promise
std::promise本身是一个模版类,通过std::promise可以像数据管道中设置value,异常和相应的通知信息。
std::promise提供了如下接口
get_future() // 返回相应的future
set_value() // 设置一个相应的值
set_exception() // 设置一个异常
set_value_at_t