BufferBlock
에 2의 제한된 용량이 있고 이것을 (LinkTo()
을 사용하여) MaxBegreeOfParallelism = 2 인 ActionBlock과 링크한다고 가정 해 봅시다. 이제 바로 2 개의 항목을 버퍼에 보낼 수 있고 ActionBlock은 즉시 처리를 시작하십시오. 하지만 작업을 완료하는 데 몇 초가 걸린다고 가정 해 보겠습니다. 버퍼에 2 개의 항목을 추가로 보낼 수 있습니까? 작업을 처음 실행하는 사람 또는 버퍼를 소비하는 작업이 완료된 후 버퍼에서만 제거되는 항목입니까?ActionBlock이 시작되거나 끝날 때 항목이 BufferBlock에서 제거됩니까?
1
A
답변
1
ActionBlock
의 바인드되지 않은 용량이 BufferBlock
의 제한된 용량과 상관없는 경우 ActionBlock
은 메모리가 부족할 때까지 모든 항목을 버퍼링합니다. 그러나 ActionBlock
의 BoundedCapcity
을 2로 설정하고 MaxDegreeParallelism
을 2로 설정하면 두 개의 메시지를 처리하고 두 개의 메시지를 버퍼에 보관합니다. 그런 다음 버퍼 블록은 2 개의 추가 메시지를 버퍼링합니다. 추가 메시지는 파이프 라인에서 용량을 기다려야합니다. 공간을 확보 할 때까지 기다리는 가장 좋은 방법은 await myPipeline.SendAsync(data)
입니다. 합계로 전체 파이프 라인에 대해 6의 용량을 갖습니다.
관련 문제
- 1. 배열을 정렬하면 항목이 제거됩니까?
- 2. 월이 시작되거나 끝날 때의 새로운 카운트
- 3. 서비스를 사용하여 다른 활동/응용 프로그램이 시작되거나 끝날 때를 모니터링하십시오.
- 4. 세션이 끝날 때 무언가를하십시오
- 5. 보기가 끝날 때 스크롤
- 6. ActionBlock이 때때로 MaxDegreeOfParallelism을 무시하는 것처럼 보입니다
- 7. 실행이 완료되면 스레드가 메모리에서 제거됩니까?
- 8. 게임이 시작되거나 중단 될 때 추가보기를 구현하는 방법
- 9. RX : 가입이 시작되거나 처리 될 때 작업을 실행 하시겠습니까?
- 10. 애니메이션이 끝날 때 알아보기/테스트하기
- 11. 목록이 끝날 때 연결 목록
- 12. 세션이 끝날 때 스크립트 실행
- 13. 애니메이션이 끝날 때 액션 수행
- 14. 인터넷이 끝날 때 우회 열림
- 15. 스크롤이 끝날 때 이벤트를 트리거해야합니다.
- 16. Konva 애니메이션이 끝날 때 어떻게해야합니까?
- 17. 요청이 끝날 때 객체가 손상됨
- 18. superfromsuperview를 제거하면 하위보기가 제거됩니까?
- 19. SKAction이 완료되면 자동으로 제거됩니까?
- 20. Gradle에서 종속성을 제거하면 제거됩니까?
- 21. 워크 시트의 오브젝트가 자동으로 제거됩니까?
- 22. iOS 앱이 시작되거나 전경이 매우 느리게 전환됩니다.
- 23. UIWebView에서 텍스트 선택이 시작되거나 끝났음을 알리는 알림?
- 24. repoze.bfg 응답이 끝날 때 클린업을 어떻게 수행해야합니까?
- 25. NSIS는 설정이 끝날 때 자동 실행을 비활성화합니다.
- 26. 오디오 재생이 끝날 때 클릭 소음이 발생합니다.
- 27. WPF 애니메이션이 끝날 때 발생하는 이벤트가 있습니까?
- 28. runAction이 끝날 때 특정 함수를 호출하려면 어떻게해야합니까?
- 29. YouTube 동영상이 끝날 때 iframe을 숨기기
- 30. mysqli_connect는 스크립트가 끝날 때 자동으로 닫습니까?
감사합니다. JSteward. 액션 블록 (ActionBlock)이 버퍼링을하고 있다는 것을 깨닫지 못했습니다. 필자가 실제로 원하는 것은 병렬로 실행되는 프로세스가 2 개뿐이지만 추가 작업을 버퍼 할 필요가 없다는 것입니다. 따라서 SendAsync를 두 번 호출하면 첫 번째 호출이 완료 될 때까지 세 번째 호출을 기다려야합니다. 그게 가능하니? – PICyourBrain
'BufferBlock'을 드롭하면 위와 같이 구성된 하나의'ActionBlock'은 4의 용량을 가지게됩니다. 두 개의 처리 중 하나와 두 개의 버퍼가있는 두 개의 작업 만 주어진 시간에 처리됩니다. 불행히도'BoundedCapacity'를 블록으로 설정 한 블록은 처리량이 1이고 버퍼가 1 인 블록 2를 여전히 제공합니다. – JSteward