public void Remove(T item)
{
locker.EnterWriteLock();
try
{
list.Remove(item);
}
}
위의 내용은 인스턴스 클래스에 대한 방법입니다. 인스턴스가 myObject
이라고합시다. 위의 조각에 관해서는, 제 질문은 이것입니다 :메서드 매개 변수가 스레드로부터 안전합니까?
스레드 한 전화 myObject.Remove(A)
.
스레드 하나가 locker.EnterWriteLock()
을 실행합니다.
두 건의 호출 myObject.Remove(B)
을 처리하십시오.
스레드가 try 블록에 들어가고 list.Remove()
을 실행합니다.
이 시점에서 item
의 값은 무엇입니까? 즉 list.Remove()
이 매개 변수로 A 또는 B와 함께 호출 될 것입니까?
'locker' 변수의 유형은 무엇입니까? –
ReaderWriterLockSlim – Sam
이 질문은 디버깅과 확인을 통해 쉽게 대답 할 수있었습니다. 당신이 알아 낸 대답에 대한 _why_의 질문은 더 좋았을 것입니다. –