自旋锁
while 抢锁(lock) == 没抢到:
print('没抢到')
自旋锁只要没抢到锁,不断地重试。
互斥锁
while 抢锁(lock) == 没抢到:
本线程先沉睡当锁的状态改变再唤醒(lock)
当去抢不到锁,而锁的状态没改变时,把CPU让出来,让别的线程先执行。由于需要 [锁的状态改变时再唤醒] 也就需要操作系统的帮助
读写锁
复数读者可以同时读,写者要求与任何人互斥
void 以读者身份加锁(rwlock){
加锁(rwlock.保护当前住着数量的锁)
rwlock.当前读者数量 += 1;
if (rwlock.当前读者数量 == 1)
加锁(rwlock.保护写操作的锁)
}
with语句(python)
尝试打开文件,同时自带处理无法打开的情况。
with 后面加上 lock(),当with代码块由于特殊原因退出时,锁也会自动释放。