1、并发、进程、线程概念
并发:
两个或者多个独立的活动同时进行
并发假象:单核CPU(上下文的切换方式实现并发)
进程:
计算机中程序关于某一个数据集合上的一次运行活动(exe的运行状态)
线程:
每一个进程都有一个主线程并且只有一个主线程
vs编译器中按ctr+f5运行程序实际是主线程调用main函数的代码
线程可以为一个运行代码的通道,路径,我们可以创建
并发的实现
1、多进程实现并发
主要解决的问题进程间通信的问题
No1 一个电脑上:管道,文件, 消息队列,内存共享
No2 不同电脑 通过SOCKET网络通信实现
2、单个进程,多个线程实现并发,就是一个主线程多个子线实现并发
一个进程中的所有线程共享的内存空间 例如:全局变量,指针引用
2.线程的多种创建方式
C++线程创建过程
2.1 #include <thread>
2.2 创建线程:调用thread类去创建一个线程对象
注意点:创建一个线程,不做处理会调用abort函数终止函数
2.3 join函数加入,汇合线程,阻塞主线程, 等待子线程执行结束,才会回到主线中
2.4 detch()函数 分离,打破依赖关系,把子线程驻留后台
从 detch后就不能够在join
2.5 joinable()判断当前线程是否可以做join或者detch过程, 可以返回true,不可以返回false
其他创建线程的方式
1、普通函数方式上面讲过
2、通过类和对象
3、Lambda表达式创建线程
4、带参的方式创建线程
5、带智能指针创建线程
6、通过类的成员函数创建线程
#include <iostream>
#include<thread>
using namespace std;