【C++11】std::future和std::shared_future区别
std::future使用
可以处理所有在线程间数据转移的必要同步,但是std::future
模型独享同步结果的所有权。并且通过 get() 函数,一次性的获取数据,让并发访问变的毫无意义。你的并发代码没有办法让多个线程等待同一个事件。
std::shared_future
std::shared_future 可以完成让多个线程的等待
std::promise<std::string> p;
std::shared_future<std::string> sf(p.get_future()); //隐式转移所有权
//使用类型推导
std::promise< std::map< someindextype, somedatatype>::iterator > p;
auto sf = p.get_future().share();