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

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

概述我们知道 Linux中的以下内核方法允许我们对共享数据应用各种锁定机制.但是,Linux是否保证了方法本身的原子性?除了与普通和读写器旋转锁相关的方法之外,如果执行线程被部分执行下面提到的任何其他方法时被抢占,那么这不会是灾难性的吗? 旋转锁定方法 spin_lock();spin_lock_irq();spin_lock_irqsave();spin_unlock();spin_unlo 我们知道 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中的“锁定”方法保证原子性?全部内容,希望文章能够帮你解决linux-kernel – Linux中的“锁定”方法保证原子性?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/1017958.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存