Linux中主要有哪几种内核锁

1、mutex(互斥信号量)

mutex_init(&mutex);

mutex_lock(&mutex);、mutex_unlock(&mutex);


2、semaphore (信号量)

void sema_init (struct semaphore *sem, int val);

void down(struct semaphore * sem);

int down_interruptible(struct semaphore * sem);

void up(struct semaphore * sem);


3、rw_semaphore (读写信号量)

void init_rwsem(struct rw_semaphore *sem);

void down_read(struct rw_semaphore *sem);

void down_write(struct rw_semaphore *sem);

void up_read(struct rw_semaphore *sem);

void up_write(struct rw_semaphore *sem);





4、Spanlock(自旋锁)

spin_lock_init(x)、DEFINE_SPINLOCK(x)、SPIN_LOCK_UNLOCKED

spin_is_locked(x)、spin_unlock_wait(x)、spin_trylock(lock)

spin_lock(lock)、spin_unlock(lock)

spin_lock_irqsave(lock, flags)、spin_unlock_irqrestore(lock, flags)

spin_lock_irq(lock)、spin_unlock_irq(lock)

spin_lock_bh(lock)、spin_unlock_bh(lock)

spin_trylock_irqsave(lock, flags)

spin_trylock_irq(lock)


5、seqlock(顺序锁)


6、rwlock (读写锁)

rwlock_init(x)

read_trylock(lock)

write_trylock(lock)

read_lock_irqsave(lock, flags)

write_lock_irqsave(lock, flags)

read_unlock_irqrestore(lock, flags)

write_unlock_irqrestore(lock, flags)


7、RCU(read-copy-update)


8、BKL(大内核锁) // to be deleted



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值