C++多线程编程
- 进程、线程的基本概念
进程是具有独立功能的程序在某个数据集合上的一次执行过程。进程是系统进行资源分配和调度的一个独立单位。
线程,又称为轻量级的进程,是CPU使用的基本单元,是进程内的一个执行实体或执行单元,是被系统独立调度和分配的基本单元。由线程ID、程序计数器、寄存器集合和堆栈组成。它与属于同一进程的其他线程共享其代码段、数据段和其他操作系统资源(如打开文件和信号)。线程有,新建,就绪,运行,阻塞状态。
在现代操作系统中,资源申请的基本单位是进程,进程由程序段、数据段和PCB(进程控制块)组成。
2.进程状态与转换
3.进程和线程的区别
4.C++多线程的几种实现方式
-
使用windows API
(https://www.cnblogs.com/codingmengmeng/p/5913068.html) -
std::thread(https://segmentfault.com/a/1190000006614695)
-
boost.asio(线程池,可以暂时不了解)
5.多线程同步和互斥的实现方式
线程间的同步方法大体可分为两类:用户模式和内核模式。顾名思义,内核模式就是指利用系统内核对象的单一性来进行同步,使用时需要切换内核态与用户态,而用户模式就是不需要切换到内核态,只在用户态完成操作。
用户模式下的方法有:原子操作(例如一个单一的全局变量),临界区。内核模式下的方法有:事件,信号量,互斥量。
6.多线程同步和互斥有何异同,在什么情况下分别使用他们?举例说明
线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒。
线程互斥是指对于共享的进程系统资源,在各单个线程访问时的排它性。当有若干个线程都要使用某一共享资源时,任何时刻最多只允许一个线程去使用,其它要使用该资源的线程必须等待,直到占用资源者释放该资源。线程互斥可以看成是一种特殊的线程同步(下文统称为同步)。
7.临界区和互斥量
https://blog.youkuaiyun.com/anddy926/article/details/7828173
8.生产者消费者问题
9.读者写者问题
10.C++锁(https://blog.youkuaiyun.com/xy_cpp/article/details/81910513)
11.
12.进程通信的方式