About Lock
锁机制在计算机程序系统软件系统中无处不在。由于锁的机制,帮助系统或软件安全可靠的运行。
锁机制我有接触到的地方是:
- 关系数据库的锁
- 多线程执行时的锁(mutex)
- 多进程执行时的锁(mutex)
- 分布式数据库的锁(redis数据库的锁)
- Ruby的解释器锁(GIL)
对锁机制的简单理解:
当你获得锁的时候,你就独占这个共享的资源或某段程序。
在某一时刻只有你能使用(比如更新、写操作)这个共享资源,
或只有你能执行这段程序。当你执行完后,你把锁归还给系统,
另一个人就能获得这个锁(或是已经那了一个新的锁,但是这个锁还没有锁资源)。
这样,在某一时刻,只有那个人能使用这个共享资源。
想起了阮云峰blog中的插图:门外有很多锁,一个人拿了一个锁后进门把门锁上。
外面的人即使拿了新的锁,但是也无法进门。必须等里面的人做完事情了,开锁出来。
然后把锁放回原来的位置。外面的人可以拿着新锁或者是之前的人归还的锁,进门,然后把门锁上。