锁的本质,就是一种资源,是由操作系统维护的一种专门用于同步的资源。
比如说互斥锁,说白了就是一种互斥的资源。只能有一个进程(线程)占有。当一个进程(线程)通过竞争获得锁的时候,其他进程(或线程)将得不到这把锁。这是内核代码决定的。
好了。现在我们决定让多个某种资源在多个进程(线程)之间共享,但是在某一个时刻只能最多有一个进程占有。这不就是互斥锁的概念吗?也就是说,我们希望自己的资源也变成一种锁。
那现在怎么办?最简单的办法就是将自己的资源和操作系统定义好的锁绑定到一起。也就是说,进程要获取我的资源之前,必须要获得操作系统的锁。进一步说,得锁得资源,失锁失资源。这样的话,我们的资源也变成了一把锁了。是不是很简单。