C++98 标准中并没有线程库的存在,直到 C++11 中才终于提供了多线程的标准库,提供了管理线程、保护共享数据、线程间同步操作、原子操作等类。多线程库对应的头文件是 #include ,类名为 std::thread 。然而线程毕竟是比较贴近系统的东西,使用起来仍然不是很方便,特别是线程同步及获取线程运行结果上就更加麻烦。我们不能简单的通过 thread.join() 得到结果,必须定义一个线程共享的变量来传递结果,同时还要考虑线程间的互斥问题。以往都是自己去封装线程实现自己的async,现在有线程的跨平台接口可以使用就极大的方便了C++多线程编程。先看一下 std::async 的函数原型第一个参数是线程的创建策略,有两种策略可供选择:

C++ std::async的使用总结

C++ std::async的使用总结

C++ std::async的使用总结

C++ std::async的使用总结

C++ std::async的使用总结