【发布时间】:2010-03-22 16:49:33
【问题描述】:
有很多关于 ReaderWriterLockSlim 类的文章,它允许多次读取和一次写入。所有这些(至少是我发现的)都告诉了如何使用它,而没有太多解释它为什么以及如何工作。标准代码示例是:
lock.EnterUpgradeableReadLock();
try
{
if (test if write is required)
{
lock.EnterWriteLock();
try
{
change the resourse here.
}
finally
{
lock.ExitWriteLock();
}
}
}
finally
{
lock.ExitUpgradeableReadLock();
}
问题是:如果可升级锁只允许单个线程进入它的部分,我为什么要在其中调用 EnterWriteLock 方法?如果我不这样做会怎样?或者,如果我调用 EnterWriteLock 而不是使用 EnterUpgradeableReadLock 并在完全不使用可升级锁的情况下写入资源,会发生什么?
【问题讨论】:
标签: .net multithreading thread-safety