차단 모음 에서
Take()
를 발견했습니다.
그리고
TryTake()
또한
Add()
그리고
TryAdd()
수취 할 품목이 없으면
Take()
Add()
와 마찬가지로 항목이 추가 될 때까지 기다립니다.
컬렉션이 최대 한도에 도달하면 항목이 제거 될 때까지 기다립니다.
병렬 프로그래밍에 관한 조 셰프 알바 리의 기사
"Add and TryAdd may block if the collection size is bounded; Take and TryTake block while the collection is empty."
그래서
Take()
그리고
TryTake()
둘 다 항목이 추가 될 때까지 기다립니다. 따라서 타임 아웃 또는 취소 토큰을 제공하지 않으면
Take()
의 차이점은 무엇입니까?
그리고
TryTake()
,
TryTake()
해서는 안됩니다
return false
곧장 기다리지 않습니까?
TryAdd()
와 동일
?
- 답변 # 1
- 답변 # 2
Take
If the collection is empty, this method immediately returns false.
A call to Take may block until an item is available to be removed.
Take
로 밝혀졌습니다 실제로InvalidOperationException
를 사용합니다 시간 제한이 무한대입니다. 그래서 이것을 쓰는 대신 :TryTake
BlockingCollection<T>.Take
를 사용할 수 있습니다 다음과 같이 :TryTake
코드를 훨씬 더 깨끗하게 만들고
while (!queue.IsCompleted) { object obj; try { obj = queue.Take(); } catch (InvalidOperationException) { continue; } // Do something with obj. }
를 던지지 않습니다 .TryTake
관련 자료
- python - var = fun ()과 var = fun의 차이점
- c - 포인터를 사용하여 값을 지정하는 것과 차이점은 무엇입니까?
- python - refindall ()과 strcount ( 'str')의 차이점은 무엇입니까?
- multithreading - Java에서 Atomic set () 및 getAndSet () 메소드의 차이점
- drools - Statefull 세션과 Stateless 세션의 차이점
- 어셈블리 언어에서 문자열과 배열의 차이점
- python - 두 사전 간의 최소 차이 계산
- matplotlib - mplpyplotfigure와 mplfigure의 차이점
- powerbi - Import와 Connect의 차이점은 SQL Server 분석 서비스를 사용하는 것입니다
- c++ - 새 요소에 대한 포인터와 새 배열의 차이점은 무엇입니까?
- database - 눈송이와 록셋의 업데이트 차이점은 무엇입니까? 일괄 업데이트가 발생합니까?
- github - git hooks와 Azure DevOps 파이프 라인의 차이점은 무엇입니까?
- Jenkins의 '차단됨', '고착 됨', '보류 중', '구축 가능'작업의 차이점
- google bigquery - (여러) 두 개의 다른 행의 차이점을 얻는 방법?
- javascript - 'react-native'에서 import {AppRegistry}의 차이점;'react-native'에서 AppRegistry를 가져옵니다
- java - while (true)와 wait () 또는 스레드 join ()의 차이점은 무엇입니까
- r - 두 그룹을 기반으로 행 간 차이 계산
- 'SAS'와 'Salesforce'의 차이점은 무엇입니까
- c - ncurses에서 nodelay ()와 cbreak ()의 차이점은 무엇입니까?
- c - MQTTAsync_onSuccess와 MQTTAsync_deliveryComplete 콜백의 차이점은 무엇입니까?
TryTake
기다리지 않으면바로false
를 반환합니다. 컬렉션에 아무것도없는 경우 와이즈 비즈 항목을 기다립니다.TryTake :
와이즈 비즈취하기 :
와이즈 비즈