我已经寻找这个问题的答案一天了,但是找不到一个直接的答案。我正在阅读上下文切换等待队列之类的东西,当我读到一篇文章时,我确实很好地掌握了.And的一切,当车队情况发生时,会有很多上下文切换。假设一个线程在等待互斥锁解锁的队列中,cpu会不断切换到那个等待线程的上下文,看看它等待的互斥锁是否被解锁了吗?如果这是真的,这意味着每次线程等待互斥锁解锁或条件变量的通知时,cpu上下文都会切换到这些线程进行检查。我说的对吗?谢谢你的帮助。
发布于 2013-03-24 19:53:57
我假设我们讨论的是操作系统级别的互斥(没有用户模式旋转)。
操作系统将永久取消对等待线程的调度,直到互斥变为空闲。只有当正在等待的互斥被解锁时,操作系统才会调度一个或多个等待线程继续执行。
这意味着等待线程不会产生任何开销。在操作系统中没有繁忙循环旋转(“交换”)。这是有必要的,因为操作系统只是在互斥量可用时解除对等待程序的阻塞。
假设所有线程都在等待一个永远不会被释放的互斥锁。在这种情况下,服务员永远不会跑,他们永远不会被切换到。
https://stackoverflow.com/questions/15598041
复制相似问题