广东湘恒智能科技有限公司
主营产品: 西门子PLC代理商,plc变频器,伺服电机,人机界面,触摸屏,线缆,DP接头
线程类其他基本概念
发布时间:2024-11-26

线程类其他基本概念


这里归纳线程类其他基本概念主要有:线程的上下文及线程切换、线程间通信、死锁、线程优先级、优先级驱动、优先级反转、优先级继承、资源、共享资源与互斥等。


图片

1.线程的上下文及线程切换

线程的上下文(Context),即CPU内寄存器。当多线程内核决定运行另外的线程时,它保存正在运行线程的当前上下文,这些内容保存在随机存储器(Random Access Memory,RAM)中的线程当前状况保存区(Task’s Context Storage Area),也就是线程自己的堆栈之中。入栈工作完成以后,就把下一个将要运行线程的当前状况从其线程堆栈中重新装入CPU的寄存器,开始下一个线程的运行,这一过程叫作线程切换或上下文切换。


2.线程间通信

线程间通信是指线程间的信息交换,其作用是实现同步及数据传输。同步是指根据线程间的合作关系,协调不同线程间的执行顺序。线程间通信的方式主要有事件、消息队列、信号量、互斥量等。有关线程间通信及下述的优先级反转、优先级继承、资源、共享资源与互斥等概念将在后续章节中详细阐述。


3.死锁

死锁指两个或两个以上的线程无限期地互相等待对方释放其所占资源。死锁产生的必要条件有4个,即资源的互斥访问、资源的不可抢占、资源的请求保持以及线程的循环等待。解决死锁问题的方法是破坏产生死锁的任一必要条件,例如规定所有资源仅在线程运行时才分配,其他任意状态都不可分配,破坏其资源请求保持特性。


4.线程优先级、优先级驱动、优先级反转、优先级继承

在一个多线程系统中,每个线程都有一个优先级(Priority)。


优先级驱动(Priority-Driven):在一个多线程系统中,正在运行的线程总是优先级最高的线程。在任何给定的时间内,总是把CPU分配给优先级最高的线程。


优先级反转(Priority- Inversion):当一个线程等待比它优先级低的线程释放资源而被阻塞时,这种现象被称为优先级反转,这是一个需要在编程时必须注意的问题。优先级继承技术可以解决优先级反转问题,目前市场上大多数商用操作系统都使用优先级继承技术。


优先级继承(Priority-Inheritance):优先级继承是用来解决优先级反转问题的技术。当优先级反转发生时,较低优先级线程的优先级暂时提高,以匹配较高优先级线程的优先级。这样,就可以使较低优先级线程尽快地执行并且释放较高优先级线程所需要的资源。


5.资源、共享资源与互斥

资源(Resources):任何为线程所占用的实体均可称为资源。资源可以是输入/输出设备,例如打印机、键盘及显示器,也可以是一个变量、结构或数组等。


共享资源(Shared Resources):可以被一个以上线程使用的资源叫作共享资源。为了防止数据被破坏,每个线程在与共享资源打交道时,必须独占资源,即互斥。


互斥(Mutual Exclusion):互斥是用于控制多线程对共享数据进行顺序访问的同步机制。在多线程应用中,当两个或更多的线程同时访问同一数据区时,就会造成访问冲突,互斥能使它们依次访问共享数据而不引起冲突。



展开全文
拨打电话 微信咨询 发送询价