C++中std::async的用法和注意事项有哪些?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2115个文字,预计阅读时间需要9分钟。
C++98标准中并未提供线程库,直到C++11才最终提供了多线程标准库,其中包括了线程管理、数据保护、线程间同步操作、原子操作等类。多线程库对应的头文件是 ``。
C++98 标准中并没有线程库的存在,直到 C++11 中才终于提供了多线程的标准库,提供了管理线程、保护共享数据、线程间同步操作、原子操作等类。多线程库对应的头文件是 #include <thread> ,类名为 std::thread 。
然而线程毕竟是比较贴近系统的东西,使用起来仍然不是很方便,特别是线程同步及获取线程运行结果上就更加麻烦。我们不能简单的通过 thread.join() 得到结果,必须定义一个线程共享的变量来传递结果,同时还要考虑线程间的互斥问题。好在 C++11 中提供了一个相对简单的异步接口 std::async ,通过这个接口可以简单的创建线程并通过 std::future 中获取结果。以往都是自己去封装线程实现自己的async,现在有线程的跨平台接口可以使用就极大的方便了C++多线程编程。
本文共计2115个文字,预计阅读时间需要9分钟。
C++98标准中并未提供线程库,直到C++11才最终提供了多线程标准库,其中包括了线程管理、数据保护、线程间同步操作、原子操作等类。多线程库对应的头文件是 ``。
C++98 标准中并没有线程库的存在,直到 C++11 中才终于提供了多线程的标准库,提供了管理线程、保护共享数据、线程间同步操作、原子操作等类。多线程库对应的头文件是 #include <thread> ,类名为 std::thread 。
然而线程毕竟是比较贴近系统的东西,使用起来仍然不是很方便,特别是线程同步及获取线程运行结果上就更加麻烦。我们不能简单的通过 thread.join() 得到结果,必须定义一个线程共享的变量来传递结果,同时还要考虑线程间的互斥问题。好在 C++11 中提供了一个相对简单的异步接口 std::async ,通过这个接口可以简单的创建线程并通过 std::future 中获取结果。以往都是自己去封装线程实现自己的async,现在有线程的跨平台接口可以使用就极大的方便了C++多线程编程。

