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不能放在递归的函数中使用。
山西省应急管理厅1月3日消息,按照国家煤矿安监局《煤矿安全生产标准化管理体系考核定级办法(试行)》和《煤矿安全生产标准化管理体系基更多
2023-01-05 10:10:12国家统计局1月4日公布的数据显示,12月下旬全国煤炭价格各有涨跌。各煤种具体价格变化情况如下: 无烟煤(洗中块,挥发份≤8%)价格2更多
2023-01-05 10:12:50近日,国家能源局核准新疆地区三个煤矿项目。 一是阿艾矿区北山中部150万吨年煤矿,项目建设单位为开滦库车高科能源有限公司,建设地点更多
2023-01-05 09:54:26山西省应急管理厅关于颁发煤矿(企业)安全生产许可证的公告根据有关规定,经研究决定为山西煤炭进出口集团左权鑫顺煤业有限公司公司等30座煤更多
2023-01-05 10:08:08请各岗位人注意,各控制人员准备,准备开机生产!1月1日一大早,在国家能源集团神东煤炭上湾煤矿综采一队,随着工作人员一声指令,智能采更多
2023-01-05 10:10:17截至2022年12月31日,新疆最大煤炭产销企业——国家能源集团新疆能源有限责任公司2022年累计完成煤炭销量8005万吨,实现新突破。 2022更多
2023-01-05 09:02:49统计局最新数据显示,12月下旬,全国流通市场钢材价格涨跌互现。具体如下: 螺纹钢(Φ16-25mm,HRB400)价格为39926元吨,较上期(更多
2023-01-05 09:16:393日从中国铁路太原局集团有限公司获悉,2022年,西煤东运大通道瓦日铁路货运量达到103亿吨,我国再增一条年运量过亿吨能源运输通道。 更多
2023-01-05 08:53:38内蒙古鄂尔多斯市能源局消息,2022年鄂尔多斯市煤炭销量预计达836亿吨,占全国五分之一,同比增加116亿吨,增幅达15%。 同时,鄂尔多斯更多
2023-01-04 10:12:22按照《辽宁省矿产资源总体规划(2021-2025年)》和相关标准,为加强全省重要矿产资源矿产地管理,日前,辽宁省自然资源厅组织有关单位和技更多
2023-01-04 10:13:19