分布式锁、进程锁、线程锁

线程锁

  主要用来给方法、代码块加锁。当某个方法或代码块使用锁是,同一个时刻至多仅有一个线程在执行该段代码。当有多个线程访问同一对象的加锁方法/代码块时,同时只有一个线程在执行,其余线程必须等待当前线程执行完后才能执行该代码段。(比如 php 中的函数中的static变量)

进程锁

  为了控制同一操作系统中多个进程访问一个共享资源,因为程序的独立性,各个进程无法控制其他进程对资源的访问,但是可以通过本地系统的信号量控制。 (比如:通过本地的某个具体文件锁的读取) 

分布式锁
  当多个进程不在同一个系统中时,使用分布式锁控制多个进程对程序的访问。

  实现分布式锁必须依靠第三方存储介质来实现,比如使用redis缓存或者数据库存储某个id,如果该锁id存在,则将退出操作,如果锁id不存在,则将锁id写入并执行对数据的操作,操作完毕后再将锁删除。

注意:线程锁、进程锁、分布式锁的作用一致,但是作用范围不同,分布式锁>进程锁>线程锁。


参考:https://mp.weixin.qq.com/s/iVUmcoEhy3ObcrZdnHUmow

原文地址:https://www.cnblogs.com/smallzhen/p/14407964.html