Golang并发操作中常见的死锁情形
都知道golang的读写锁中,只要读锁和读锁之间是不互斥的,写和读、写和写锁之间是互斥的,由于golang中是不支持锁的重入的(有的地方也叫做递归锁)写锁重入导致死锁
读写锁冲入导致死锁
b.需要注意的点,虽然读与读锁之间是不需要互斥的,但是,当两个读锁重入的时候,需要考虑对应锁对象的写锁是否会影响读锁的重入从而导致死锁
例如单独的两个读锁,他们这样是不会死锁的
但是需要注意写锁对重入的读锁的影响,可能会出现死锁,当有写锁申请时会阻塞掉新的读锁申请,也就是说当同时有读锁和写锁同时申请获得同一个锁对象时,优先