이것은 학문적 인 질문입니다 ...하지만 ConcurrentDictionary.TryAdd가 실패 할 수 있습니까? 그렇다면 어떤 경우에 왜 그렇습니까?ConcurrentDictionary.TryAdd가 실패 할 수 있습니까?
답변
이를 수 있음 여기 상태 (from msdn) 위치 :
- 경우 ArgumentNullException은 - 키가 null 참조
- OverflowException - 요소의 최대 수에 도달했을 때
- 그것을 동일한 키를 가진 요소가 이미 존재하면 false을 반환합니다.
다시 말해서, 이것은 동시성과 관련이 없습니다. 당신은 같은 시간에 항목을 삽입하는 방법에 대한 두 개의 스레드를 걱정하면 다음과 같은 문제가 발생할 수 있습니다 : 키가
- 모두 삽입이 잘 작동, 다른 삽입 실패 (예외는 아님) false를 반환합니다. 이것은 두 개의 스레드가 동일한 키를 가진 항목을 삽입하려고 시도 할 때 기본적으로 하나의 스레드 만이 다른 느슨한 항목보다 우선 순위가 높을 때 발생합니다.
Ok ... 동시 액세스와 아무런 관련이 없습니다. 표준 사전과 동일한 검사를 수행합니다. –
예, 내부적으로 CPU 회전을 사용하므로 여러 동시 연결이 가능합니다. – oleksii
고마워. 나는 당신의 대답을 가장 건설적인 것으로 받아들이고 있습니다. 우리는 여기에서 다소 애매한 버그를 디버깅하고 있으며 가능한 소스를 한 줄씩 배제하고 있습니다. 내가 기여한 것을 토대로 TryAdd를 배제 할 수 있습니다. (추가 실패시 여분의 로깅을 추가 할지라도) –
물론 가능합니다. 키가 이미 존재하면 메서드는 false를 반환합니다.
참조 : http://msdn.microsoft.com/en-us/library/dd267291.aspx
반환 값 유형 : 선택 System.Boolean 실제 키/값 쌍을 성공적으로 ConcurrentDictionary에 추가 된 경우. 키가 이미있는 경우이 메서드는 false를 반환합니다.
음 ... 그건 주어진 것입니다. 그게 실패 할 수있는 유일한 경우인가요? –
@daveL - 예, 예외가 발생할 때 ... Oleksii의 답변을 참조하십시오. –
도와 줘서 고마워. 내가 +1 했어. –
키가 사전에 이미 존재하면 실패합니다.
메모리가 부족하여 값을 추가 할 수없는 경우 대신 예외가 발생합니다.
- 1. Python에서 str()이 실패 할 수 있습니까?
- 2. 어떻게하면 Nhibernate 트랜잭션이 실패 할 수 있습니까?
- 3. 이 트림 코드가 실패 할 수 있습니까?
- 4. 왜 context_info가 실패 할 수 있습니까?
- 5. Perl에서 테스트 소프트가 실패 할 수 있습니까?
- 6. 왜 DwmRegisterThumbnail이 실패 할 수 있습니까?
- 7. 언제 PropertyUtils.copyProperties가 자동으로 실패 할 수 있습니까?
- 8. Winsock 연결이 임의로 실패 할 수 있습니까?
- 9. PyImport_AppendInittab은 어떻게 실패 할 수 있습니까?
- 10. WinMobile에서 PhysX 메모리가 풍부하더라도 VirtualAlloc이 어떻게 실패 할 수 있습니까?
- 11. 왜 HttpOpenRequest가 오류 122와 함께 실패 할 수 있습니까?
- 12. 언제 그리고 왜 sprintf가 실패 할 수 있습니까?
- 13. 왜 gen_tcp : controlling_process()가 badarg로 실패 할 수 있습니까?
- 14. 파이썬의 mktime을 통한 왕복이 '범위를 벗어남'으로 실패 할 수 있습니까?
- 15. 함수에서 IE7 onSubmit return false가 실패 할 수 있습니까?
- 16. Silverlight 앱이 오류없이 어떻게 실패 할 수 있습니까?
- 17. HashMap 키 해시 코드가 실패 할 수 있습니까?
- 18. 어떻게이 간단한 포인터 평등 테스트가 실패 할 수 있습니까?
- 19. PLSQL 트리거로 인해 INSERT INTO가 자동으로 실패 할 수 있습니까?
- 20. maven-exec-plugin이 빌드를 실패 할 수 있습니까?
- 21. RAM이 부족하여 이미지 처리가 실패 할 수 있습니까?
- 22. Paypal Express Checkout API : DoExpressCheckoutPayment가 실패 할 수 있습니까?
- 23. Appharbor를 사용하면 빌드가 실패 할 때 이메일을받을 수 있습니까?
- 24. MySQL과 PDO : 이론적으로 PDO :: lastInsertId가 실패 할 수 있습니까?
- 25. List 잠금이 실패 할 수 있습니다.
- 26. 하는 검증 테스트에 실패 할 수
- 27. 경고를 시도 할 수 있습니까?
- 28. wkhtmltopdf가 실제로 실패 할 때
- 29. 실패 할 시나리오가 필요합니다. Array.ConstrainedCopy()
- 30. 유효성 검사가 실패 할 때 HTML을 수정해야 할 때 ASP.NET 유효성 검사 컨트롤을 사용할 수 있습니까?
이 질문은 꽤 애매합니다. MSDN [페이지] (http://msdn.microsoft.com/en-us/library/dd267291.aspx)에는 예외적 인 것과 다른 것의 두 가지 이유가 설명되어 있습니다. –
예 및 MSDN 설명서의 명확성과 무결성으로 알려져 있습니다. –
글쎄, 그것은 분명하고 다른 답변에 대한 완벽한 보인다. –