2010-04-01 4 views
2

ReaderWriterLockSlim을 구현했습니다. 이제는 잠금 대기를 원하지 않습니다. 자물쇠가 잡히면 다른 것을하고 싶습니다.ReadWriteSlimlock이있는 경우 다른 작업 수행

내가 isWriterLockHeld하지만 두 스레드가 동시에 들어와 동시에 if 문을 입력하면 이후로는 나에게 많은 의미가없는 사용으로 간주 하나 여전히 잠금

에서 기다리고있을 것입니다 여기 내 코드가있다.

아무도 올바른 방향으로 나를 안내 할 수 있습니까?

감사

답변

4

시간 초과를 매개 변수로 사용하는 TryEnterWriteLock()의 오버로드를 사용할 수 있습니다. 0을 전달하면 잠금을 취할 수없는 경우 즉시 반환됩니다. 또 다른 문제에

if(rw.TryEnterWriteLock(0)) 
{ 
    // do something with the lock held (don't forget to use a try/finally) 
} 
else 
{ 
    // do something if the lock fails 
} 

, 왜 두 번 rw를 할당하는?

ReaderWriterLockSlim rw = GetLoadingLock(parameters); 
rw = GetLoadingLock(parameters); // This line is probably redundant 

당신은이 Dictionary<string,bool> itemsLoading를 들어, 대신 HashSet<string>을 사용할 수 있습니다 사용하는 경우.

2

왜 타임 아웃 0의 TimeSpanTryEnterWriteLock()를 사용하지 않는?

초과가 0이면 원하는 상태를 사용할 수없는 경우 즉시 거짓 를 잠금 상태를 확인하고 반환 이 방법.

관련 문제