自选锁问题

来源:7-3 线程同步之自旋锁

慕仙zwynb

2022-08-14

老师好,自旋锁加锁和解锁执行的指令不是TSL就是XCHG,我理解您说的一直霸占着CPU,是不是当一个进程(线程)已经进入临界区了,其他线程想进入,它就会一直尝试执行TSL指令或是XCHG对临界区加锁,而这俩个指令操作是需要锁住总线的,这样控制内存传输线路都被锁上了那其他进程就啥也不能做了,所以导致自旋锁一直霸占CPU的情况(单核情况下)

写回答

1回答

咚咚呛

2022-08-14

点赞,同学对CPU指令都有所了解。

TSL指令是指"测试并上锁",XCHG指令是指"两个寄存器数据交换",对于CPU来说是原子的指令,在上层我们可以利用这些指令来实现一些无锁的数据结构;自旋锁本质上就是就这样的指令实现的一种锁机制,可以有不同的实现,但都是大同小异的。

0
0

(新版)计算机基础,计算机组成原理+操作系统+网络

编程之前先学这门课,系统补足计算机基础知识,夯实编程地基

7739 学习 · 1580 问题

查看课程