我正在寻找这样的数据结构:
position whoCares bla ...
200.001890 -0.00110 -0.100000
199.997990 0.000790 -2.200000
199.952110 0.026330 -28.900000
199.780060 0.116370 -60.400000
199.321650 0.349330 -154.200000
198.242900 0.901430 -248.700000
196.447890 1.816030 -289.200000
... ... ...
通过添加标签或向列添加新数据,表格可以在两个维度上增长。数据大小从 3-20 列到每列 100-10000 个 double 不等。
这应该定义为一个数据集作为一个类实例。数据访问应如下所示:
double[] Get(string tag) // data.Get("position")
double Get(string tag, int index) // data.Get("position", 17)
...
到目前为止,这很容易,只需使用 aDictionary<string, double[]>
或Dictionary<string, List<double>>
。
现在这必须是线程安全的,并且应该具有良好的性能。但简单的数据访问比性能更重要。
请注意,double[] Get(...)
返回内部数据的副本,因为返回引用会在多线程场景中造成麻烦。通常会有一名作者和 1-3 名读者。
我尝试了几种方法,例如Dictionary<string, double[]>
and double[]
vs. List<double>
。
最好的方法是什么?是否有其他使用 C# 2.0 的数据容器/结构?
编辑:
此类应充当由一个写入器线程填充的数据容器,该写入器线程从硬件读取所有数据。在应用程序运行时,UI 线程读取该数据只是为了绘制图表。
第二种情况是之前的编写器线程,但是 UI 线程被一个线程取代,该线程对该数据执行计算并将结果存储在第二个数据实例中,然后由 UI 显示。