Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Stream 需要了解数据流处理权衡的帮助吗_Stream_Iterator_Dataflow_Gnuradio - Fatal编程技术网

Stream 需要了解数据流处理权衡的帮助吗

Stream 需要了解数据流处理权衡的帮助吗,stream,iterator,dataflow,gnuradio,Stream,Iterator,Dataflow,Gnuradio,我想为数字信号处理实现一个基于数据流的系统,很像,处理以块的形式进行,这些块串在一起处理数据流。据我所知,有三种方法可以传递数据流:一个块可以将数据“推”到下一个块,一个块可以从上一个块中“拉”数据,或者块可以处理数据缓冲区并返回数据缓冲区,由调度器处理缓冲区(最后一种方法是GNU Radio的操作方式) 每种方法都有权衡。例如,“拉取”体系结构要求,对于获取一个输入流并返回两个输出流的块,使用任意大的缓冲区缓冲输出流(在拉取第一个输出之前,可以为n样本“拉取”第二个输出)。类似地,“推送”方法

我想为数字信号处理实现一个基于数据流的系统,很像,处理以块的形式进行,这些块串在一起处理数据流。据我所知,有三种方法可以传递数据流:一个块可以将数据“推”到下一个块,一个块可以从上一个块中“拉”数据,或者块可以处理数据缓冲区并返回数据缓冲区,由调度器处理缓冲区(最后一种方法是GNU Radio的操作方式)

每种方法都有权衡。例如,“拉取”体系结构要求,对于获取一个输入流并返回两个输出流的块,使用任意大的缓冲区缓冲输出流(在拉取第一个输出之前,可以为
n
样本“拉取”第二个输出)。类似地,“推送”方法也存在同样的问题,即采用2个输入流并返回1个输出流的块。但我认为这两种方法都使块实现更容易,因为每个块都可以将其输入和输出视为一个流


在我进一步研究这个项目之前,我想知道:有没有研究过这样实现流程图的不同方法之间的权衡?我真的很想写一篇我可以阅读的文章,以便在实施过程中遇到问题之前理解这些问题。

这是一个非常广泛的问题。你肯定可以读很多书,对手头的事情形成一个真正的消息灵通的意见

然而,在通用操作系统的世界中并不存在拉动。你可以有两样东西

  • 轮询,下游块不断询问“有新数据吗?”,这是浪费,通常被认为是糟糕的设计
  • 等待,它让下游块的线程等待,直到调度器或相邻块通知他更改为止(即,有新数据可用,或者下游块现在准备处理更多数据,因此您可以生成一些)
  • GNU Radio有2个功能,可扩展性好,易于多线程处理,因此在SMP体系结构上运行良好。我已经写了一个非常小的,非常基本的GNU无线电调度机制是如何工作的,但是也有一些与