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

慕仙zwynb
2022-08-14
老师好,自旋锁加锁和解锁执行的指令不是TSL就是XCHG,我理解您说的一直霸占着CPU,是不是当一个进程(线程)已经进入临界区了,其他线程想进入,它就会一直尝试执行TSL指令或是XCHG对临界区加锁,而这俩个指令操作是需要锁住总线的,这样控制内存传输线路都被锁上了那其他进程就啥也不能做了,所以导致自旋锁一直霸占CPU的情况(单核情况下)
写回答
1回答
-
咚咚呛
2022-08-14
点赞,同学对CPU指令都有所了解。
TSL指令是指"测试并上锁",XCHG指令是指"两个寄存器数据交换",对于CPU来说是原子的指令,在上层我们可以利用这些指令来实现一些无锁的数据结构;自旋锁本质上就是就这样的指令实现的一种锁机制,可以有不同的实现,但都是大同小异的。
00
相似问题