C++并发编程0 - 欢迎来到多线程的世界
2016-09-27 11:48
537 查看
博客原文:www.freehacker.com
C++11中引入了多线程编程,一般教科书中都没有涉及到这个概念,但是在工作中多线程却又是必不可少的。本文会展示最基本的Hello World, Concurrency程序。
最近一直研究多线程编程,忽然有感,如果我每掌握一个知识点,便分享出来,这比我蒙头死学更加高效。如果我的使用不正确,也有机会被指出来。所以便想整理网络或者书籍上所能学到的东西,写一个教程出来,力求能让刚入门不久的C++开发者,也能轻松的掌握并发编程的奥妙。
本教程不涉及太多原理性东西,需要那些知识的可以百度,或者买本《C++并发编程实战》,网路上或书籍里原理性的东西已经够多了,我想写的是让读者看完之后,能够很轻松的知道,该怎么用C++的多线程机制。其中,很多内容都是来自网路或者书籍上,感谢各位大神慷慨的分享。
如果没有特殊提及,本教程的所以代码都是基于Visual Studio 2013,如果更换其他编译器有可能无法运行。
这段代码很简单,如果用过boost多线程编程,那么应该对这个了如指掌了。首先包含线程库头文件,然后定义一个线程对象t,线程对象负责管理以hello()函数作为初始函数的线程,join()等待线程函数执行完成——这儿是阻塞的。
这个最简单的Hello World已经包含了多线程编程的基本结构,至于线程管理、数据共享、线程同步、原子操作,以及一系列进阶操作都会在后面详细阐述。
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多线程编程,那么应该对这个了如指掌了。首先包含线程库头文件,然后定义一个线程对象t,线程对象负责管理以hello()函数作为初始函数的线程,join()等待线程函数执行完成——这儿是阻塞的。
这个最简单的Hello World已经包含了多线程编程的基本结构,至于线程管理、数据共享、线程同步、原子操作,以及一系列进阶操作都会在后面详细阐述。
相关文章推荐
- C++之运算符重载(1)
- (2)排序概述
- 高效重构 C++ 代码
- 我用C语言 写一个函数返回参数二进制中 1 的个数的三种不同方法
- C语言之关键字、宏定义、条件编译
- Effective C++ 条款10: 令operator= 返回一个reference to *this
- 【C++内存管理】浅析C++中函数调用时的内存分配-函数局部变量的内存分配
- C++,C#,VC,VC.net,java以及VC++有什么区别和联系?
- c++ 与C#比较
- 《Leetcode系列》C++实现:1-two sum
- 初学BLE蓝牙底层开发的常识
- C语言基础学习运算符-逻辑运算符
- 设计模式C++实现(15)——观察者模式
- 设计模式C++实现(11)——装饰模式
- 设计模式C++实现(10)——桥接模式
- 设计模式C++实现(8)——代理模式
- 设计模式C++实现(4)——单例模式
- 设计模式C++实现(3)——适配器模式
- 设计模式C++实现(2)——策略模式
- 设计模式C++实现(1)——工厂模式