联系我们 - 广告服务 - 联系电话:
您的当前位置: > 关注 > > 正文

今头条!Linux下常见的锁机制-自旋锁 自旋锁spinlock见解

来源:CSDN 时间:2023-01-06 08:17:11

Linux下常见的锁机制


【资料图】

Linux下常见的锁机制主要有:spinlock(自旋锁)、mutex(互斥锁)和semaphore(信号量)等;

Windows下还有CRITICAL_SECTION(临界区),临界区机制的实现只能是单进程里,它的性能较高;

多线程之spinlock(自旋锁)

因为准备要参加一个项目,需要了解tcmalloc的实现机制,无意中看到了使用自旋锁机制,所以临时记录一下。

自旋锁是锁机制中简单易用的一种,它是一种忙等待锁,一般适用于短时间内处理事件等待的轻量级加锁。

下面给出一个实例:

int  status; spinlock_t     spinlock;

int init_lock(void) {spin_lock_init(&spinlock); }

int  add_status(struct  inode *inode, struct file *filp) {spin_lock(&spinlock); if( OpenCloseStatus ) {spin_unlock(&spinlock); return -EBUSY; } status++; spin_unlock(&spinlock); }

int  sub_status(struct  inode *inode, struct file *filp) {spin_lock(&spinlock); status--; spin_unlock(&spinlock);

}

Spinlock的一些特点

1. spinlock不会导致线线程上下文切换,即不会导致用户态到内核态的切换;

2. spinlock只能使用在内核态中,即内核代码中;

3. spinlock锁之间的代码尽量简短,并且spinlock不能放在递归的函数中使用。

责任编辑:

标签:

相关推荐:

精彩放送:

新闻聚焦
Top