咨询个有关自旋锁和互斥锁的问题:
自旋锁获取不到锁的时候线程会一直自旋消耗掉当前线程持有的CPU时间片;互斥锁获取不到锁的时候线程会主动交出CPU时间片,并添加到当前锁的等待队列里,等持有锁的线程临界区代码执行完毕后被唤醒。自旋锁相对于互斥锁来说白白消耗了CPU的时间片而且会导致"优先级反转"问题,为什么还将自旋锁定义为轻量级锁呢?还有个问题互斥锁进行线程唤醒时是唤醒等待队列中全部线程还是唤醒第一个线程?
1.自旋锁的使用,是因为大部分情况下,等待时间是很少的,为了避免系统的cpu调度造成浪费,直接在用户层面代码就完成了。如果占用锁的时间过长,就得不偿失了。
2.唤醒那个得看什么语言吧
进程、线程和协程是高并发和高可用的基础知识之一,我们在进程、线程和协程(基础篇)中详细的介绍了它们的概念和关系,尤其与它们相关的一些基础知识,但是我们知道了这些基础知识还远不远不够。在我们使用中,经常会遇到这些问题:线程安全问题、进程通信问题和在我们要频繁使用进程、线程和协程的时候,而引入的进程池,线程池和协程池问题等。https://blog.csdn.net/sanylove/article/details/125627424?spm=1001.2014.3001.5502