2016-07-15 2 views
0

Dataflow TPL 라이브러리를 사용하여 파이프 라인을 구현하는 것에 대한 질문이 있습니다.Dataflow TPL 선행 조건을 사용하여 파이프 라인 구현

내 경우에는 일부 작업을 동시에 처리해야하는 소프트웨어가 있습니다. 처리 방식은 다음과 같습니다. 먼저 전역 수준에서 앨범을 처리 한 다음 앨범 내부로 이동하여 각 그림을 개별적으로 처리합니다. 응용 프로그램이 처리 슬롯을 가지고 있으며 구성 할 수 있다고 가정 해 봅시다 (예를 들어 슬롯 = 2로 가정). 이것은 애플리케이션이 처리 할 수있는 수단 중 하나

a) 동일한 앨범 동시에 d) 상기 두 개의 포토에서 동시에 두 앨범 b) 다른 앨범 C에서 하나 개의 앨범 + 하나 개 사진) 개의 포토 다른 앨범

에 동시에 현재이 같은 과정을 구현 :

TransformBlock<Album, Album> albumTransferBlock = new TransformBlock<Album, Album>(ProcessAlbum, new ExecutionDataflowBlockOptions { MaxDegreeOfParallelism = 2 }); 

ActionBlock<Album> photoActionBlock = new ActionBlock<Album>(ProcessPhoto); 

albumTransferBlock.LinkTo(photoActionBlock); 


Album ProcessAlbum(Album a) { 
    return a; 
} 

void ProcessPhoto(Album album) { 
foreach(var photo in album) { 
    // do some processing 
} 
} 

내가 가진 문제는 내가 한 번에 1 앨범을 처리 할 때, 응용 프로그램이 사진을 처리하는 두 개의 슬롯을 사용하지 않을 것입니다. c)를 제외한 모든 요구 사항을 충족합니다.

DataFlow TPL을 사용하여이 문제를 해결할 수있는 사람이 있습니까?

감사합니다. :)

답변

0

나는 나 자신에게 대답 할 수 있다고 생각한다. 내가 한 것은 :

1) 나는 3) 입력으로 IProcessor를 받아 처리 방법을 실행 한 ActionBlock를 만든 IProcessor 인터페이스 방법 AlbumProcessing 포장 공정() 2) PhotoProcessing와 인터페이스 IProcessor를 만들었습니다.

4) 앨범 처리가 끝나면 모든 사진 처리가 ActionBlock에 추가됩니다.

이것은 100 % 요구 사항을 충족시킵니다. 어쩌면 누군가 다른 해결책을 가지고 있을까요?