我已經實現了ReaderWriterLockSlim,現在我不希望它在鎖中等待。如果持有鎖,我想做其他事情。如果執行ReadWriteSlimlock,則執行其他操作
我認爲使用是isWriterLockHeld,但它並沒有使太大的意義對我來說,因爲如果兩個線程在同一時間進來,if語句在同一時間進入一個將仍處於鎖定
等待這是我的代碼。
ReaderWriterLockSlim rw = GetLoadingLock(parameters);
rw = GetLoadingLock(parameters);
try
{
rw.EnterWriteLock();
item = this.retrieveCacheItem(parameters.ToString(), false);
if (item != null)
{
parameters.DataCameFromCache = true;
// if the data was found in the cache, return it immediately
return item.data;
}
else
{
try
{
object loaditem = null;
itemsLoading[parameters.ToString()] = true;
loaditem = this.retrieveDataFromStore(parameters);
return loaditem;
}
finally {
itemsLoading.Remove(parameters.ToString());
}
}
}
finally
{
rw.ExitWriteLock();
}
任何人都可以請指導我在這個正確的方向。
感謝