为什么要有线程?
进程相当于一个项目,而线程就是为了完成项目需求,而建立的一个个开发任务
- 第一,创建进程占用资源太多;
- 第二,进程之间的通信需要数据在不同的内存空间传来传去,无法共享。
如何创建线程?
一个普通线程的创建和运行过程:
线程的数据
线程访问的数据细分成三类:
- 线程栈上的本地数据. 就是函数栈中的变量
- 在整个进程里共享的全局数据. 该变量只有一份
- 线程私有数据. 该变量每个线程持有一份 (只是同名)
数据的保护
互斥锁
Mutex,全称 Mutual Exclusion,中文叫互斥
- 争, 谁先拿到谁访问
条件锁
当它接到了通知,来操作共享资源的时候,还是需要抢互斥锁,因为可能很多人都受到了通知,都来访问了,所以条件变量和互斥锁是配合使用的。