(笔记demo)Linux系统编程 线程部分笔记
2021/12/9 7:20:18
本文主要是介绍(笔记demo)Linux系统编程 线程部分笔记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1. 线程是程序的最小运行单元,代码段只是数据
2. 和进程类似,线程也存在资源竞争,在不做管控的情况下,你并不会知道哪一个线程先运行
3. 线程没有主次之分,但是进程结束,线程也就结束,所以进程的那条线程可以认为是‘主’线程
4. 每条线程都拥有自己的寄存器和栈段,所以当线程结束后,线程内的数据也会被释放
5. 线程之间的通信:句柄思想、共享空间、返回值、传出参数、全局变量等等
线程管控↓线程管控↓线程管控↓
6. 锁:线程中最重要的概念之一,管理线程
多线程同时对统一全局变量进行修改时,会经历,读->改->写,三步
例:两个线程同时读了一个变量a到自己的寄存器,然后a+1,然后把修改后的a传回内存,a等于6,但实际上设计者希望a=7,因为a加了2次
锁会将读改写三步合成一个原子操作,并且其他线程等待锁的过程也可以设置阻塞
但同一个锁的资源只有一个
7. 死锁:当一个锁被线程占用时,申请该锁会导致线程进入阻塞等待,即便自己正在使用这个锁,
例:拿着手机找手机
解决方案:尽量不使用多个锁,使用多个锁也需按严格按顺序使用,设计程序时不断设想是否会造成死锁,也可以使用非阻塞申请锁
8. 信号量:锁的升级版,可以自己设置资源量,也就是多个锁
信号量不仅可以用于同一进程之中的线程,还可以跨进程使用,非常强大
9. 条件变量:通过一个变量响应程序操作,可以管理线程执行顺序的切换
可以暂时释放锁,使得其他线程可以使用锁,在其他线程响应条件变量后,该线程会重新申请锁,并且继续运行
这篇关于(笔记demo)Linux系统编程 线程部分笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-0600-macOS和Linux安装和管理多个Python版本
- 2024-03-30[译]漫画SELinux概念
- 2024-03-29linux 移动文件
- 2024-03-28linux .so file
- 2024-03-28Linux 磁盘管理
- 2024-03-28Linux学习笔记(十三)磁盘管理(一):磁盘分区
- 2024-03-26linux 创建 文件
- 2024-03-25使用SecureCRT对Linux vim进行颜色设置
- 2024-03-202019-2020-12 20199317 《Linux内核原理与分析》 第十二周作业
- 2024-03-20Linux运维的第二周总结