系统相关
首页 > 系统相关> > (笔记demo)Linux系统编程 线程部分笔记

(笔记demo)Linux系统编程 线程部分笔记

作者:互联网

1. 线程是程序的最小运行单元,代码段只是数据

2. 和进程类似,线程也存在资源竞争,在不做管控的情况下,你并不会知道哪一个线程先运行

3. 线程没有主次之分,但是进程结束,线程也就结束,所以进程的那条线程可以认为是‘主’线程

4. 每条线程都拥有自己的寄存器和栈段,所以当线程结束后,线程内的数据也会被释放

5. 线程之间的通信:句柄思想、共享空间、返回值、传出参数、全局变量等等

线程管控↓线程管控↓线程管控↓

6. 锁:线程中最重要的概念之一,管理线程

        多线程同时对统一全局变量进行修改时,会经历,读->改->写,三步

        例:两个线程同时读了一个变量a到自己的寄存器,然后a+1,然后把修改后的a传回内存,a等于6,但实际上设计者希望a=7,因为a加了2次

        锁会将读改写三步合成一个原子操作,并且其他线程等待锁的过程也可以设置阻塞

        但同一个锁的资源只有一个

7. 死锁:当一个锁被线程占用时,申请该锁会导致线程进入阻塞等待,即便自己正在使用这个锁,

        例:拿着手机找手机

        解决方案:尽量不使用多个锁,使用多个锁也需按严格按顺序使用,设计程序时不断设想是否会造成死锁,也可以使用非阻塞申请锁

8. 信号量:锁的升级版,可以自己设置资源量,也就是多个锁

        信号量不仅可以用于同一进程之中的线程,还可以跨进程使用,非常强大

9. 条件变量:通过一个变量响应程序操作,可以管理线程执行顺序的切换

        可以暂时释放锁,使得其他线程可以使用锁,在其他线程响应条件变量后,该线程会重新申请锁,并且继续运行

        

标签:变量,管控,demo,可以,笔记,线程,使用,进程
来源: https://blog.csdn.net/deligent_torche/article/details/121797159