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确实有效.
大多数这些功能确实会在执行其操作时禁用抢占功能. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |