Es wird viel über die Klasse ReaderWriterLockSlim geschrieben, die mehrfaches Lesen und einmaliges Schreiben ermöglicht. Alle (zumindest die, die ich gefunden habe) sagen, wie man sie benutzt, ohne viel Erklärung, warum und wie sie funktioniert. Das Standard-Codebeispiel ist:
lock.EnterUpgradeableReadLock();
try
{
if (test if write is required)
{
lock.EnterWriteLock();
try
{
change the resourse here.
}
finally
{
lock.ExitWriteLock();
}
}
}
finally
{
lock.ExitUpgradeableReadLock();
}
Die Frage ist: Wenn die aufrüstbare Sperre nur einem einzigen Thread erlaubt, ihren Bereich zu betreten, warum sollte ich dann die Methode EnterWriteLock darin aufrufen? Was wird passieren, wenn ich das nicht tue? Oder was passiert, wenn ich anstelle von EnterUpgradeableReadLock EnterWriteLock aufrufe und in eine Ressource schreibe, ohne die aufrüstbare Sperre überhaupt zu verwenden?