C++11中引入了多线程编程,一般教科书中都没有涉及到这个概念,但是在工作中多线程却又是必不可少的。本文会展示最基本的Hello World, Concurrency程序。
概述
C++11之后,多线程终于被支持了,C++开发者再也不需要借助boost等第三方库的力量,来实现跨平台的并行编程。语言层面上的支持,能够让开发者更加专注于业务逻辑,从而减少对系统平台的关注。C++11多线程的引入,让C++编程更加高效和简便。
最近一直研究多线程编程,忽然有感,如果我每掌握一个知识点,便分享出来,这比我蒙头死学更加高效。如果我的使用不正确,也有机会被指出来。所以便想整理网络或者书籍上所能学到的东西,写一个教程出来,力求能让刚入门不久的C++开发者,也能轻松的掌握并发编程的奥妙。
本教程不涉及太多原理性东西,需要那些知识的可以百度,或者买本《C++并发编程实战》,网路上或书籍里原理性的东西已经够多了,我想写的是让读者看完之后,能够很轻松的知道,该怎么用C++的多线程机制。其中,很多内容都是来自网路或者书籍上,感谢各位大神慷慨的分享。
如果没有特殊提及,本教程的所以代码都是基于Visual Studio 2013,如果更换其他编译器有可能无法运行。
Hello World
经典的Hello World式开端。
#include <iostream>
#include <thread>
void hello()
{
std::cout << "Hello world, concurrency" << std::endl;
}
int main()
{
std::thread t(hello);
t.join(); // 没有这句话,会Debug Error的
return 0;
}
这段代码很简单,如果用过boost多线程编程,那么应该对这个了如指掌了。首先包含线程库头文件<thread>,然后定义一个线程对象t,线程对象负责管理以hello()函数作为初始函数的线程,join()等待线程函数执行完成——这儿是阻塞的。
这个最简单的Hello World已经包含了多线程编程的基本结构,至于线程管理、数据共享、线程同步、原子操作,以及一系列进阶操作都会在后面详细阐述。
关注微信公众号FreeHacker
网友评论