【Go弃用可重入锁】为什么可重入锁/递归锁的设计“不太好”
Java里面可重入锁能解决重量级锁引发的死锁问题,不挺好的吗?比如下面代码(mutex相当于Java重量级锁),对外提供了两个方法F和G,如果是Java的话,调用F,进入F时Lock一次,进入G时又Lock一次,此时会出现死锁情况,相当于线程占用了资源后又自己等自己,如果是可重入锁则不会死锁,进入F时Lock一次锁的可重入次数+1,进入G时又Lock一次又+1,对应Unlock时再-1,正常执行结束。而且可重入锁可在用户进程空间实现,避免了额外开销,又能解决死锁,性能也比重量级锁好,为什么还说其设计“不太好
原创
2022-05-21 21:54:28 ·
894 阅读 ·
0 评论