나는 여러 스레드가 액세스하는 HashTable을 가지고있다. 예를 들어 세 개의 스레드를 살펴 보겠습니다.HashTable 동시성
스레드 A는 Hash.Insert ("a", 새 객체())를 수행합니다.
스레드 B는 Hash.Insert ("b", new object())를 수행합니다.
스레드 C는 Hash.Insert ("a", new object())를 수행합니다.
는 몇 가지 이유를 들어, 나는 순서에 대해주의를 해달라고하거나하는 과정의 끝에 해시에있을 것입니다 오브젝트 전체 해시
에 대한 잠금을 사용할 수 없습니다. 내가 신경 쓰는 유일한 점은 다른 스레드에서 동일한 셀을 업데이트하여 데이터가 손상되지 않는다는 것입니다.
내 옵션에는 어떤 것이 있습니까? 또는 문제가 아니며 HashTable 자체에서 처리하고 데이터를 그대로 유지합니다.
"몇 가지 이유 때문에 전체 해시에서 잠금을 사용할 수 없습니다. 해당 요구 사항을 설명 할 수 있습니까? 그것은 단지 성과입니까? – CodesInChaos
@CodeInChaos 동시에 수천 개의 요청이있을 수 있으므로 기아에 대해 걱정이됩니다. 잠금이 프로세서 시간을 얻지 못하는 스레드에 대해 가능한 것이기 때문입니다 ... –
비 FIFO 때문에 기아가 발생할 가능성은 거의 없습니다. 잠금 처리.http://stackoverflow.com/questions/961869/is-there-a-synchronization-class-that-guarantee-fifo-order-in-c를 참조하십시오. 기아를 방지하는 FIFO 순서를 보장하는 동기화 객체에 대해. –