如图所示,黑色表示没有获得CPU,绿色表示获得CPU,假设为单核两线程程情况。
线程1开始运行,并进入临界区,在出临界区运行过程中到了上下文切换时间。
线程2获得CPU,正常运行一段时间后需要运行至临界区代码,此时,线程1位于临界区。因为不能两个线程同时位于临界区,所以线程2阻塞。
线程1获得CPU,正常运行一段时间后出临界区,继续运行一段时间,到了上下文切换时间。
线程2获得CPU,发现线程1不在临界区了,此时进入临界区运行
如图所示,黑色表示没有获得CPU,绿色表示获得CPU,假设为单核两线程程情况。
线程1开始运行,并进入临界区,在出临界区运行过程中到了上下文切换时间。
线程2获得CPU,正常运行一段时间后需要运行至临界区代码,此时,线程1位于临界区。因为不能两个线程同时位于临界区,所以线程2阻塞。
线程1获得CPU,正常运行一段时间后出临界区,继续运行一段时间,到了上下文切换时间。
线程2获得CPU,发现线程1不在临界区了,此时进入临界区运行