linux 自旋锁

    一个自旋锁是一个互斥设备,它只能有两个值:“锁定”和“解锁”。它通常实现为某个整数值中的单个位,希望获得某特定锁的代码测试相关的位。如果锁可用,则“锁定”位被设定,则代码进入临界区。相反,如果锁被其它人获得,则代码进入忙等待,并重复检测这个锁,直到这个锁可用为止。

自旋锁的定义:

spinlock_t lock;

自旋锁的初始化:

spinlock_init(&lock);

自旋锁的获取:

void spin_lock(spinlock_t *);///成功则立即返回,否则自旋

int spin_trylock(spinlock_t *);///成功则返回真,失败则返回假,不自旋

自旋锁的释放:

void spin_unlock(spinlock_t);

自旋锁在内核中的实现如下:

wKioL1OCkAzT_vNfAAFL_klvx-Q203.jpg

释放锁的过程与获取锁的过程类似。

你可能感兴趣的:(linux,spinlock)