C++11并发指南之多线程的示例分析
这篇文章将为大家详细讲解有关C++11并发指南之多线程的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
成都创新互联公司长期为近1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为龙华企业提供专业的成都做网站、网站制作、成都外贸网站建设,龙华网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制开发。
与 C++11 多线程相关的头文件
C++11 新标准中引入了四个头文件来支持多线程编程,他们分别是
:该头文主要声明了两个类, std::atomic 和 std::atomic_flag,另外还声明了一套 C 风格的原子类型和与 C 兼容的原子操作的函数。 :该头文件主要声明了 std::thread 类,另外 std::this_thread 命名空间也在该头文件中。 :该头文件主要声明了与互斥量(mutex)相关的类,包括 std::mutex 系列类,std::lock_guard, std::unique_lock, 以及其他的类型和函数。 :该头文件主要声明了与条件变量相关的类,包括 std::condition_variable 和 std::condition_variable_any。 :该头文件主要声明了 std::promise, std::package_task 两个 Provider 类,以及 std::future 和 std::shared_future 两个 Future 类,另外还有一些与之相关的类型和函数,std::async() 函数就声明在此头文件中。
std::thread "Hello world"
下面是一个最简单的使用 std::thread 类的例子:
#include#include #include // std::cout #include // std::thread void thread_task() { std::cout << "hello thread" << std::endl; } /* * === FUNCTION ========================================================= * Name: main * Description: program entry routine. * ======================================================================== */ int main(int argc, const char *argv[]) { std::thread t(thread_task); t.join(); return EXIT_SUCCESS; } /* ---------- end of function main ---------- */
Makefile 如下:
all:Thread CC=g++ CPPFLAGS=-Wall -std=c++11 -ggdb LDFLAGS=-pthread Thread:Thread.o $(CC) $(LDFLAGS) -o $@ $^ Thread.o:Thread.cc $(CC) $(CPPFLAGS) -o $@ -c $^ .PHONY: clean clean: rm Thread.o Thread
注意在 Linux GCC4.6 环境下,编译时需要加 -pthread,否则执行时会出现:
$ ./Thread terminate called after throwing an instance of 'std::system_error' what(): Operation not permitted Aborted (core dumped)
原因是 GCC 默认没有加载 pthread 库,据说在后续的版本中可以不用在编译时添加 -pthread 选项。
关于“C++11并发指南之多线程的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
分享标题:C++11并发指南之多线程的示例分析
当前链接:http://myzitong.com/article/gceggi.html