读写锁和互斥锁
读写互斥锁,简称读写锁
mux sync.RWMutex
Lock和Unlock分别对写锁进行锁定和解锁
RLock和RUnlock分别多读锁进行锁定和解锁
1 读写锁与互斥锁之间的不同,源于对共享资源的读操作和写操作区别对待,读写锁之间的互斥,是通过内含的互斥锁来实现的。可以认为读写锁是互斥锁的一种扩展。
2 对某个受到读写锁进行保护的共享资源,多个写操作不能同时进行,写操作和读操作也不能同时进行,但多个读操作可以同时进行。
3 对写操作进行解锁,会唤醒“所有应试图锁定读锁,而被阻塞的gorutime”,并且这通常会使他们都完成对读锁的锁定。
4 对读锁进行解锁,只会在其他没有读锁锁定的前提下,唤醒“应试图锁定写锁,而被阻塞的gorutime”,并且最终只会有一个被唤醒的gorutime能够成功完成对写锁的锁定,其他的gorutime还在原处继续等待,至于是哪个gorutime,那就看谁的等待时间最长。
网友评论