gpt4 book ai didi

linux-kernel - Linux 中的 "lock"方法保证原子性?

转载 作者:行者123 更新时间:2023-12-01 02:13:59 25 4
gpt4 key购买 nike

我们知道 Linux 中的以下内核方法允许我们对共享数据应用各种锁定机制。但是,Linux 是否保证方法本身的原子性?除了无法休眠的与普通和读写自旋锁相关的方法外,如果一个执行线程在部分执行了下面提到的任何其他方法时被抢占,这不是灾难性的吗?

自旋锁方法

spin_lock();
spin_lock_irq();
spin_lock_irqsave();
spin_unlock();
spin_unlock_irq();
spin_unlock_irqrestore();
spin_lock_init();
spin_trylock();
spin_is_locked();

读写器自旋锁方法
read_lock();
read_lock_irq();
read_lock_irqsave();
read_unlock();
read_unlock_irq();
read_unlock_ irqrestore();
write_lock();
write_lock_irq();
write_lock_irqsave();
write_unlock();
write_unlock_irq();
write_unlock_irqrestore();
write_trylock();
rwlock_init();

信号量方法
sema_init();
init_MUTEX();
init_MUTEX_LOCKED();
down_interruptible();
down();
down_trylock();
up();

读写信号量方法
init_rwsem();
down_read();
up_read();
down_write();
up_write();
down_read_trylock();
down_write_trylock();
downgrade_write();

互斥方法
mutex_lock();
mutex_unlock();
mutex_trylock();
mutex_is_locked();

完成变量方法
init_completion();
wait_for_completion();
complete();

最佳答案

如果这些函数相对于锁本身不是原子的,它们将根本无法工作。上次我查看时,我的 Linux 确实可以工作。

大多数这些功能确实在做他们的事情时禁用了抢占。

关于linux-kernel - Linux 中的 "lock"方法保证原子性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26602735/

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