Я хотел бы реализовать систему обработки цифровых сигналов, основанную на потоке данных, такую как GNU Radio, где обработка происходит в блоках, и эти блоки объединяются для обработки потока данных. Насколько я могу судить, есть три способа обойти поток данных: блок может «нажимать» данные на следующий блок, блок может «вытаскивать» данные из предыдущего блока, или блоки могут обрабатывать буферы данных и возвращать буферы данных, с планировщиком, обрабатывающим буферы (последний способ - это использование GNU Radio).Нужна помощь в понимании компромиссов обработки потока данных
Имеются компромиссы с каждым подходом. Например, для «вытягивающей» архитектуры требуется, чтобы блок, который принимает один входной поток и возвращает два выходных потока, что выходные потоки буферизуются с помощью произвольно большого буфера (второй вывод может быть «вытащен» для n
выборок до первого выход вытягивается). Точно так же подход «pushing» имеет ту же проблему с блоками, которые принимают 2 входных потока и возвращают 1 выходной поток. Но я бы сказал, что оба этих метода упрощают реализацию блоков, поскольку каждый блок может просматривать свои входы и выходы как один поток.
Прежде чем я получу дальнейший проект, я хотел бы знать: Проводилось ли исследование взаимосвязи между различными способами реализации потоков-графиков, подобных этому? Мне бы очень хотелось написать рецензию, которую я могу прочитать, чтобы я понял проблемы до того, как их начинали на полпути через реализацию.