我已经寻找这个问题的答案一天了,但找不到直接的答案。我正在阅读上下文切换等待队列之类的内容,确实很好地掌握了所有内容。在阅读一篇文章时,写到当发生车队情况时,将会有大量的上下文切换。那么让我直接说一下,假设一个线程处于等待互斥体解锁的队列中,CPU 是否不断地上下文切换到该等待线程以查看其等待的互斥体是否已解锁。如果这是真的,则意味着每次线程等待互斥锁解锁或条件变量通知时,CPU 上下文都会切换到这些线程进行检查。我对么?
感谢您的帮助。
我假设我们正在讨论操作系统级互斥体(无用户模式旋转)。
操作系统将永久取消调度等待线程,直到互斥体空闲。仅当正在等待的互斥锁被解锁时,操作系统才会安排一个或多个等待线程恢复执行。
这意味着等待线程不会造成任何开销。操作系统中没有忙循环旋转(“切换”)。这是有必要的,因为操作系统只是在互斥体变得可用时解除对服务员的阻塞。
想象一下所有线程都在等待一个永远不会被释放的互斥体。在这种情况下,服务员永远不会跑,也永远不会被调换。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)