.Net List 클래스는 스레드로부터 안전하지 않습니다. 필자는 최소한의 자물쇠가 필요하지만 여전히 읽기, 팬텀 레코드가 허용되고 쓰는 것에 대한 요구 사항을 충족 시키려면 스레드로부터 안전해야하므로 손실 된 업데이트가 없도록해야합니다..NET List 스레드 안전 구현 제안이 필요합니다
그래서 나는
public static List<string> list = new List<string>();
In Methods that have **List.Add**/**List.Remove** , I always lock to assure thread safety
lock (lockHelper)
{
list.Add(obj);
or list.Remove(obj);
}
In Methods that requires **List Reading** I don't care about phantom record so I go ahead to read without any locking. In this case. Return a bool by checking whether a string had been added.
if (list.Count() != 0) {
return list.Contains("some string")
}
내가 쓰기 잠금 된 한 모든 액세스 같은 것을 가지고 있고, 어떤 잠금없이 통과에 대한 액세스를 읽을 수 있습니다. 내 스레드 안전 아이디어가 유효합니까?
목록 크기 확장이 있다는 것을 알고 있습니다. 괜찮을까요? 내 생각 엔 List가 확장되면 temp를 사용할 수 있습니다. 명부. 임시 목록 크기가 항상 경계를 가지며 .Net 클래스가 잘 구현되어 있기 때문에 괜찮습니다. 읽은 내용이 업데이트에서 발견되면 indexOutOfBound 또는 순환 참조 문제가 없어야합니다.
사용하는 .NET 버전의 모든 스레드 안전 컬렉션을 볼 수 있습니까? – msarchet
microsoft.net v4.0 – Bamboo