2 가지 다른 소스에서 오는 2 가지 다른 데이터가 있는데 두 가지 다른 주파수에서 데이터가 합쳐져서 함께 처리해야한다고 가정 해 봅시다. 채널 A의 주파수는 100Hz (초당 100 정수)이며 채널 B의 주파수는 1Hz (초당 1 정수)입니다. 데이터는 TPL 데이터 흐름에서 ActionBlock을 사용하여 각 개별 채널에서 이미 처리됩니다. 이제는 함께 처리해야합니다 (A에서 1000 int 및 B에서 한 번에 5 int). 저에게 해결책은 채널 A (1000 정수)에서 1000 개의 메시지와 채널 B (5 개의 정수)에서 5 개의 메시지를 기다리는 BatchJoinBlock을 사용하여이 블록을 결합하는 것입니다. 일괄 처리가 채워지면 작업 블록으로 처리하고 처리합니다.TPL dataflow와 BatchJoinBlock이 서로 다른 배치 크기를 가지고 있습니다.
문제는 - 설명서에 따르면 BatchJoinBlock (MSDN)은 항상 동일한 크기의 모든 배치를가집니다.
다른 크기로 이동할 수 있습니까?
다른 대안으로, 크기가 다른 2 개의 BatchBlock 객체를 생성 한 다음 JoinBlock에 실행 시켜서 ActionBlock에 데이터를 보낼 수 있습니다. 그러나 그것은 잔인한 것 같이 보입니까? 아니면 일반적인 접근입니까?
두 가지 다른 채널의 조인을 구현하기 전에 지금은 이론적 인 접근 방법을 고려하고 있기 때문에 코드를 게시하지 않을 것입니다. 필요한 경우 신속하게 몇 가지 예를 노크 할 수 있습니다.
두 가지 다른 BatchBlock 아이디어가 최선의 선택이라고 생각합니다. 나는 그것에 추가 할 것이 아무것도 없다. – i3arnon