我正在学习互斥锁和自旋锁之间的区别。据我了解,两者的操作方式相同。唯一的区别是他们如何等待。自旋锁只会使用无限循环,直到资源的锁被释放。这会用无用的指令占用 CPU 内核。互斥锁只是一个无限 while 循环,循环中带有 sleep() 系统调用以防止 CPU 占用/浪费。
一个进程可以有三个主要状态。运行、等待和阻塞。 sleep 系统调用是否将进程置于阻塞状态,内核稍后会处理它?还是内核会通过暂停执行进入等待状态来处理系统调用,以便调度程序可以执行上下文切换到另一个进程?
我的问题是 sleep() 系统调用对进程有什么作用?