锁用来控制多线程访问共享资源的工具。
互斥锁:线程之间互斥,一个线程获取到锁,另一个线程要获取锁时,发现锁已经被其他线程获取,则不可获取锁。
读写锁:将读写操作进行拆分,针对读写单独加锁,读锁与读锁不互斥,写锁与任何锁互斥。也就是说一旦加了写锁,其他线程加读锁也会进行阻塞直到写锁释放。
类似于数据库中对一行数据加排他锁(写锁),可以对该行数据进行查询,但是不可以对这行数据再加读锁。