消费者sleep(10)的过程中,生产者会持续霸占着cpu,top命令是看到接近100%的。
不是很理解这里,场景1:
1、这是一个多核cpu,消费者对资源进行自旋锁加锁操作到解锁这一段过程中,它是不是也需要一个cpu来工作?同时生产者在等待锁的解开也会霸占着一个cpu?
2、如果是这样的话 为什么cpu占用率会差不多100%,这里的top命令查看的是单个cpu的利用率吗(生产者霸占的那个cpu)?
3、如果top命令查看的cpu是所有核数总的利用率,那生产者都已经霸占了几乎100%,消费者那边怎么办(它还没工作完)?好模糊,请老师解释一下
场景2:
1、单核cpu,不知道有没有理解错:单核cpu模拟出来的多个线程,线程A用于消费者,线程B用于生产者。消费者sleep(10)过程中,线程B霸占了唯一的那个cpu,线程A获取不到cpu不能完成消费者的任务,所以会一直卡死。(这就是自旋锁不适用单核cpu的原因吗?)
问题有点多麻烦老师解释一下哈谢谢