2013-03-04 2 views
0

나는 데이터의 목록을 보유하고 클래스가 (예 : 목록), 클래스에서 사용할 수있는 방법이 있습니다를더 나은 lock 문은 무엇입니까?

  1. 목록을 업데이트 할
  2. 삽입 새 항목을 나열하고
  3. 는에서 모든 항목을 삭제 목록

위의 삽입, 업데이트 및 삭제 방법이 여러 스레드에서 호출되고 있습니다. 그래서 다음과 같이 잠금을 제공해야합니다. Object locker = new Object();

// Insert method 
lock(locker) 
{ 
    // Insert to list 
} 
// Update method 
lock(locker) 
{ 
    // Update the list 
} 

지금 내 질문 방법을 잠금의 종류는 위와 같이 잠금 객체를 사용하거나 아래 목록 잠금의 "syncroot"방법을 사용할지 여부를, 선한이다. 제발 조언.

// Insert method 
lock(((ICollection)myList).SynRoot) 
{ 
    // Insert to list 
} 
// Update method 
lock(((ICollection)myList).SynRoot) 
{ 
    // Update the list 
}  

감사

+1

.NET 4 년 이후가 전문 컬렉션을 제안 'ConcurrentBag'와 같은 프레임 워크에서 이들 중 하나를 사용했는지 살펴 보았습니까? –

답변

0

좀 재 인수 분해 및

이 귀하의 요구 사항 스위트 경우

Blocking Collection에보고하는 대신 명시 적으로 잠금을 사용하려고