2013-08-20 63 views
0

我想運行一個簡單的硬件數據採集實驗(基於NI硬件)。將T陣列併發隊列排隊<T>

實際採集運行在一個線程中,其中數據(以雙精度形式)作爲double []提供。返回值的數組可以是任意長度,具體取決於數據傳入的速度。

我需要將此數據添加到全局數據集中。

在C++或類似的問題中,您可以通過將新數據添加到預先分配的各種緩衝區並將指針移動到緩衝區來解決此問題。

在C#中,我不是很確定,我可以這樣做:

排隊(雙[])到ConcurrentQueue?

這似乎愚蠢不得不遍歷雙[]和呼叫排隊對每個元素..

回答

5

確保你定義一個ConcurrentQueue<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();