1

我想运行一个简单的硬件数据采集实验(基于 National Instruments 硬件)。

实际的采集在一个线程中运行,其中数据(以双精度形式)作为双精度 [] 提供。返回值的数组可以是任意长度,具体取决于数据传入的速度。

我需要通过附加将此数据添加到全局数据集中。

在 C++ 等中,您可以通过将新数据添加到预分配的各种缓冲区并将指针向上移动来解决此问题。

在 C# 中我不太确定,我可以执行以下操作:

Enqueue(double[]) 到 ConcurrentQueue ?

必须迭代 double[] 并在每个元素上调用 enqueue 似乎很愚蠢。

4

1 回答 1

5

确保您定义 aConcurrentQueue<double[]>然后您可以执行以下操作:

System.Collections.Concurrent.ConcurrentQueue<double[]> concurrentQueue = 
      new System.Collections.Concurrent.ConcurrentQueue<double[]>();
concurrentQuey.Enqueue(new double[] { 1, 3, 4, });
concurrentQuey.Enqueue(new double[] { 4, 5, 6, });

稍后,如果您需要一个扁平的双项数组,那么您可以执行以下操作:

double[] flattenedArray = concurrentQueue.SelectMany(r => r).ToArray();
于 2013-08-20T15:02:48.053 回答