当进程多线程开发使用的锁:
自旋锁:当线程获取不到锁时,就会一直尝试去获取锁。直到获取到锁为止,自旋锁中不能使用sleep代码,否则将会导致cpu无法切换回获取锁的线程,导致死锁的产生,自旋锁只适合锁住的时间很短的代码。
互斥锁:当线程获取不到锁时,cpu会把锁放到等待队列中,有更多的时间去执行别的线程。直到解锁为止
锁具有限制优化读写操作的作用
多进程开发使用的锁:
分布式锁:
redis分布式锁,使用redis的单线程特性,对key.set 赋值 当key不存在时才能赋值成功并设置过期时间,当线程设置成功key则表明该线程获得了锁,应开启一个线程一直为key的超时时间续航,保证一定能完成本次操作。当完成后删除key