自旋锁
while 抢锁(lock) == 没抢到:
print('没抢到')
自旋锁只要没抢到锁,不断地重试。
互斥锁
while 抢锁(lock) == 没抢到:
本线程先沉睡当锁的状态改变再唤醒(lock)
当去抢不到锁,而锁的状态没改变时,把CPU让出来,让别的线程先执行。由于需要 [锁的状态改变时再唤醒] 也就需要操作系统的帮助
读写锁
复数读者可以同时读,写者要求与任何人互斥
void 以读者身份加锁(rwlock){
加锁(rwlock.保护当前住着数量的锁)
rwlock.当前读者数量 += 1;
if (rwlock.当前读者数量 == 1)
加锁(rwlock.保护写操作的锁)
}
with语句(python)
尝试打开文件,同时自带处理无法打开的情况。
with 后面加上 lock(),当with代码块由于特殊原因退出时,锁也会自动释放。
本文介绍了并发控制中的三种锁机制:自旋锁、互斥锁和读写锁。自旋锁在未获取锁时会持续尝试,不释放CPU。互斥锁在抢锁失败后会让出CPU,等待锁状态改变时被唤醒。读写锁允许多个读者同时读取,但写者需要独占资源。另外,还提到了Python的with语句在使用锁时的优雅处理方式。
973

被折叠的 条评论
为什么被折叠?



