操作系统中的锁:自旋锁、互斥锁、条件变量、信号量、死锁

一直对这些概念学了又忘忘了又学,究其根本是因为始终没搞清楚这几个概念之间的关系,每次都是钻进细节里面,所以就很容易忘了。所以这里整理一下,以后回忆起来也方便。

首先锁是什么?操作系统中的锁是用于协调多个进程或线程对共享资源的访问(即多个线程同时只有一个线程可以进入临界区代码),以防止竞争条件和数据不一致的问题,以及实现进程之间的同步(本来两个不同的进程是各干各的,互不影响,这叫异步,如果我想要让进程A运行完某行代码之后进程B再运行,这叫作同步),比如读写进程之间就需要同步,写好了之后才能读。下面是实现进程互斥和同步的伪代码。

//进程互斥
mutex;
Thread1(){
   
   
	mutex.lock();
	Print();
	mutex.unlock();
}
Thread2(){
   
   
	mutex.lock();
	Print();
	mutex.unlock();
}
//进程同步
mutex.lock();//先锁,再运行子线程
Thread1(){
   
   
	write();
	mutex.unlock();
}
Thread1(){
   
   
	mutex.lock();
	read();//只有当写完之后才能读
}

那么锁有哪些呢?常见的有互斥锁(Mutex)、自旋锁(Spinlock)、读写锁(Read-Write Lock)、条件变量(Condition

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值