尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

实现锁的方式之中断的开关

实现锁的方式之中断的开关 如大家所了解的关于编程中锁的具体实现需要脱离我们的编程语言往操作系统、硬件的支持这些更下的一层去探究。中断的开关在线程切换的时候需要用到中断因此若关闭了中断则可以阻止当前 CPU 运行的任务被其他任务所抢占。这是一种非常简单粗暴的方式具体的在进入临界区代码前关闭中断离开临界区后重新开启中断。简单的用伪码表示为:function lock() 关闭中断 function unlock() 开启中断 function thread_fun() lock() 临界区操作 unlock()首先该方法的最大优点就是简单但是缺点却是一大堆并且在多处理器的环境下该方法基本完全无效。因为在多处理器下不同的线程极大可能的运行在不同的 CPU 下当前进程下的线程不会互相切换因此无法达到锁的目的。但回到单处理器的环境该方法也具有极大弊端。我们无法预料在临界区需要什么样的环境支持和会做什么。假如临界区就是需要一次 IO 中断的产生那当前程序甚至说是整个计算机将会锁死。即使临界区本身不需要中断也有可能一些耗时的操作导致后台中断的丢失或其他需要中断的任务无法正常运行而使得计算机直接死机 。
返回列表