标签:命名空间 name c++11 linux 编程方式 strong err 好处 std
C++ 11自2011年发布以来已经快两年了,之前一直没怎么关注,直到最近几个月才看了一些C++ 11的新特性,算是记录一下自己学到的东西吧,和大家共勉。
相信Linux程序员都用过Pthread,但有了C++ 11的std::thread以后,你可以在语言层面编写多线程程序了,直接的好处就是多线程程序的可移植性得到了很大的提高,所以作为一名C++程序员,熟悉C++ 11的多线程编程方式还是很有益处的。
C++11新标准中引入了如下头文件来支持多线程编程,他们分别是<atomic>,<thread>,<mutex>,<condition_variable>和<future>。
std::thread "Hello thread"
下面是一个最简单的使用std::thread类的例子:
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 #include <iostream> // std::cout 5 #include <thread> // std::thread 6 7 void thread_task() { 8 std::cout << "hello thread" << std::endl; 9 } 10 11 /* 12 * === FUNCTION ========================================================= 13 * Name: main 14 * Description: program entry routine. 15 * ======================================================================== 16 */ 17 int main(int argc, const char *argv[]) 18 { 19 std::thread t(thread_task); 20 t.join(); 21 22 return EXIT_SUCCESS; 23 } /* ---------- 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.cpp $(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选项。
标签:命名空间 name c++11 linux 编程方式 strong err 好处 std
原文地址:http://www.cnblogs.com/codingmengmeng/p/7694658.html