gpt4 book ai didi

c - 为什么持有自旋锁时不允许 "sleeping"?

转载 作者:太空狗 更新时间:2023-10-29 17:05:08 27 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Why can't you sleep while holding spinlock?

据我所知,自旋锁应该在短时间内使用,并且只是在不允许休眠(抢占)的中断处理程序等代码中的选择。

但是,我不知道为什么会有这样的“规则”,即持有自旋锁时根本不应该休眠。我知道这不是推荐的做法(因为它不利于性能),但我看不出为什么在自旋锁中不应该允许 sleep 。

You cannot hold a spin lock while you acquire a semaphore, because you might have to sleep while waiting for the semaphore, and you cannot sleep while holding a spin lock (from "Linux Kernel Development" by Robert Love).

我能看到的唯一原因是出于可移植性的原因,因为在单处理器中,自旋锁被实现为禁用中断,通过禁用中断,休眠当然是不允许的(但休眠不会破坏 SMP 系统中的代码)。

但我想知道我的推理是否正确,或者是否还有其他原因。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com