【问题标题】:C#, multithreaded filling of a multidimensional array [duplicate]C#,多维数组的多线程填充[重复]
【发布时间】:2012-02-15 16:53:21
【问题描述】:

可能重复:
Are C# arrays thread safe?

我目前有一个单线程程序,它基本上将大量计算数据放入多维数组(例如 double[,] ; string[,] )。

是否可以将此数组的段分配给不同的线程?更准确地说,如果我确保只有一个线程会在给定坐标处写入,是否会触发某种锁定机制?

【问题讨论】:

    标签: c# arrays multithreading


    【解决方案1】:

    就并发问题而言,只要您的线程不同时读取或写入数组的同一部分,您就可以了。不过,由于“False Sharing”危险,您可能会看到速度变慢,因此当线程数增加时,您可能需要注意意外的变慢。

    【讨论】:

      【解决方案2】:

      如果我确保只有一个线程会在给定坐标处写入

      那么你就安全了。假设您不调整数组大小等。

      如果您现在使用 for 循环,您可能只需切换到 Parallel.For(0, n, method)

      【讨论】:

        猜你喜欢
        • 2018-05-07
        • 1970-01-01
        • 1970-01-01
        • 2014-12-23
        • 2011-01-11
        • 1970-01-01
        • 2023-01-26
        相关资源
        最近更新 更多