【C++】并发编程入门
来源:互联网 发布:java汽车租赁项目 编辑:程序博客网 时间:2024/05/16 11:14
C++11一个重要的特性就是对多线程的支持。
何谓并发
计算机领域的并发指的是在单个系统里同时执行多个独立的任务,而非顺序的进行一些活动。
并发的两种方式:
1.多核处理器,每个任务在自己核心上执行,称为硬件并发,机器能够真正的并行多个任务;
2.单核机器,通过多任务操作系统的切换功能,同时运行多个程序。机器只能在某一时刻执行一个任务,不过它每秒可以执行多次任务切换。因为任务切换的很快,以至于无法感觉任务在何时被暂时挂起,而切换到另一任务,如今仍然称这样的系统为并发,
关系:当应用在多任务切换的环境下和真正并发的环境下执行相比,行为还是有区别的。任务切换在多核处理器上仍然适用。
并发的途径
1.多进程并发——有多个 单线程的 进程
2.多线程并发——单个进程运行多个进程
为什么使用并发
1.为了分离关注点
把不同的关注点分离开来,是处理复杂性的一个原则。通过将相关的代码与无关的代码分离,可使程序更容易理解和测试;同时可使每个线程的逻辑变的更加简单。
2.为了性能
两种方式利用并发提升性能:(1)任务并行:将一个单任务分成几部分,且各自并行运行,从而降低运行总时间(2)数据并行:每个线程在不同的数据部分执行相同的操作。使用可并行的方式,来解决更大的问题。这样,处理一个数据块仍然需要相同的时间,但在相同的时间内处理了更多的数据。
C++中的并发和多线程
随着C++11标准的发布,有了一个全新的线程感知内存模型,C++标准库也扩展了:包含了用于管理线程、保护共享数据、线程间同步操作、以及低级原子操作的各种类。
hello world
/************************************************************************* > File Name: hello.cpp > Author: Tanswer_ > Mail: 98duxm@gmail.com > Created Time: 2017年03月27日 星期一 20时48分51秒 ************************************************************************/#include <iostream>#include <string>#include <stack>#include <algorithm>#include <thread> // 1using namespace std;void hello() // 2{ cout << "hello world\n";}int main(){ thread t(hello); // 3 t.join(); // 4 return 0;}
1.标准C++库对多线程支持的声明在新的头文件中,其中包含管理线程的函数和类在头文件中,保护共享数据的函数和类在其他头文件
2.每个线程必须具有一个初始化函数,新线程从这里开始执行
3.被命名为t的std::thread对象拥有新函数hello()作为其初始函数
4.调用线程(main()中)等待与thread对象相关联的线程结束
下篇介绍C++线程管理。
1 0
- 【C++】并发编程入门
- 并发编程网-并发入门
- python 并发编程入门
- java并发编程入门
- 并发编程Disruptor入门
- C++并发编程
- 并发编程:信号量入门---转
- OpenMP并发编程快速入门
- Java 并发编程入门URL
- Erlang编程入门之并发编程-进程
- linux c 网络编程 并发
- linux c编程入门
- C++STL编程入门
- linux c编程入门
- Erlang入门(二)— 并发编程
- erlang 入门 并发编程,ping pong
- C++并发编程学习——1.C++并发入门
- 【编程 C】入门C小结
- GUI_事件监听机制原理概述及举例
- 13. Roman to Integer
- 插入排序之直接插入排序和折半插入排序
- 欢迎使用CSDN-markdown编辑器
- ZOJ 3768Continuous Login
- 【C++】并发编程入门
- 几分钟走进神奇的光流|FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks
- 线程的优先级
- 动态规划:青蛙跳台阶、变态跳台阶
- JavaSE入门学习51:多线程编程(二)
- 206. Reverse Linked List
- ISBN号码
- 经典面试题——赋值运算符的重载
- iOS开发本地通知(每天定点发送消息推送)