반응형
ConcurrentDictionary.TryAdd가 실패 할 수 있습니까?
이것은 학문적 질문에 가깝지만 ConcurrentDictionary.TryAdd가 실패 할 수 있습니까? 그렇다면 어떤 경우에 왜?
예, 다음과 같은 조건이 있습니다 ( msdn에서 제공 ).
- ArgumentNullException- 키가 null 참조 인 경우
- OverflowException- 최대 요소 수에 도달했을 때
- 동일한 키를 가진 요소가 이미 존재하면 false를 반환 합니다.
다시 말하지만 이것은 동시성과 관련이 없습니다. 동시에 항목을 삽입하는 두 개의 스레드에 대해 걱정하면 다음과 같은 상황이 발생할 수 있습니다.
- 키가 다르면 두 삽입 모두 잘 작동합니다.
- 하나의 삽입은 제대로 작동하고 true를 반환하고 다른 삽입은 예외없이 실패하고 false를 반환합니다. 이것은 두 개의 스레드가 동일한 키로 항목을 삽입하려고 시도하고 기본적으로 하나만 이기고 다른 하나가지는 경우에 발생합니다.
물론 가능합니다. 키가 이미있는 경우 메서드는 false를 반환합니다.
참고 : http://msdn.microsoft.com/en-us/library/dd267291.aspx
반환 값 형식 : System.Boolean 키 / 값 쌍이 ConcurrentDictionary에 성공적으로 추가 된 경우 true입니다. 키가 이미있는 경우이 메서드는 false를 반환합니다.
키가 이미 사전에 있으면 실패합니다.
메모리가 부족하여 값을 추가 할 수없는 경우 대신 예외가 발생합니다.
참고 URL : https://stackoverflow.com/questions/11501931/can-concurrentdictionary-tryadd-fail
반응형
'Program Club' 카테고리의 다른 글
| git-빈 폴더를 제거하고 변경 사항을 푸시하는 방법은 무엇입니까? (0) | 2020.11.24 |
|---|---|
| Symfony2에서 ObjectManager와 EntityManager의 차이점은 무엇입니까? (0) | 2020.11.24 |
| NewtonSoft.Json 유형 IEnumerable의 속성을 사용하여 클래스 직렬화 및 역 직렬화 (0) | 2020.11.24 |
| 두 구문의 의미 적 유사성을 알려주는 알고리즘이 있습니까? (0) | 2020.11.24 |
| ASP.NET MVC 컨트롤러 수명주기 (0) | 2020.11.24 |