加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux-kernel – Linux中的“锁定”方法保证原子性?

发布时间:2020-12-13 22:56:37 所属栏目:Linux 来源:网络整理
导读:我们知道 Linux中的以下内核方法允许我们对共享数据应用各种锁定机制.但是,Linux是否保证了方法本身的原子性?除了与普通和读写器旋转锁相关的方法之外,如果执行线程被部分执行下面提到的任何其他方法时被抢占,那么这不会是灾难性的吗? 旋转锁定方法 spin_l
我们知道 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确实有效.

大多数这些功能确实会在执行其操作时禁用抢占功能.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读