Я запускаю довольно типичную модель производителя/потребителя для разных задач.
Task1: считывает партии байтов [] из двоичных файлов и запускает новую задачу для каждой коллекции массивов байтов. (операция выполняется для целей управления памятью).
Задача 2-n: это рабочие задачи, и каждый из них работает с переданной коллекцией (из Tasks1) массивов байт и де-сериализует массивы байтов, сортирует их по определенным критериям и затем сохраняет коллекцию результирующих объектов ( каждый массив байтов десериализуется в такой объект) в параллельном словаре.
Задача (n + 1) Я выбрал параллельный словарь, потому что задача этой задачи заключается в объединении тех коллекций, которые хранятся в параллельном словаре в том же порядке, что и в том, как они возникли из Task1. Я достигаю этого, передавая идентификатор collectionID (он имеет тип int и увеличивается для каждой новой коллекции в Task1) вплоть до задачи Task1 до этой задачи. Эта задача в основном проверяет, сохранен ли следующий ожидаемый идентификатор коллекции в параллельном словаре, и если да, вынимает его, добавляет в конечную очередь и проверяет следующую коллекцию в параллельном словаре.
Теперь, из того, что я прочитал, и видео, которое я смотрел, мне кажется, что TPL Dataflow может стать идеальным кандидатом для такой модели производителя/потребителя. Я просто не могу разработать дизайн и, таким образом, начать работу, потому что никогда не работал с TPL Dataflow. С точки зрения пропускной способности и латентности эта библиотека даже до задачи? В настоящее время я обрабатываю 2,5 миллиона байт-массивов и, следовательно, объекты в секунду в результирующих коллекциях. Может ли облегчить поток данных TPL? Меня особенно интересует ответ на следующий вопрос: может ли поток данных TPL сохранять порядок сборочных партий из Task1 при нерестах рабочих задач и повторного слияния их после выполнения рабочими задачами? Это оптимизирует ситуацию? Профилировав всю структуру, я чувствую, что довольно много времени тратится впустую из-за вращения и слишком много одновременных коллекций.
Любые идеи, мысли?