关于 ReaderWriterLockSlim的Albahari Threading部分显示了此储物柜的用法。但是没有任何 try-catch 和 finally 阻止例外情况。
为什么他没有使用异常处理来不留下打开的锁?在下面的示例中,如果 DivideBy 参数为 0,则写锁保持打开状态。
所以他试图简单地展示用法而不是让例子变得复杂?如果是这样,处理这个问题的最佳做法是什么?如果它被持有,我们应该总是使用 finally 块作为退出锁吗?
public class Divide
{
static int x = 1000;
static ReaderWriterLockSlim locker = new ReaderWriterLockSlim();
public void DivideBy(int divide)
{
locker.EnterWriteLock();
x = x / divide;
locker.ExitWriteLock();
}
}