【发布时间】:2012-02-15 16:53:21
【问题描述】:
我目前有一个单线程程序,它基本上将大量计算数据放入多维数组(例如 double[,] ; string[,] )。
是否可以将此数组的段分配给不同的线程?更准确地说,如果我确保只有一个线程会在给定坐标处写入,是否会触发某种锁定机制?
【问题讨论】:
标签: c# arrays multithreading
我目前有一个单线程程序,它基本上将大量计算数据放入多维数组(例如 double[,] ; string[,] )。
是否可以将此数组的段分配给不同的线程?更准确地说,如果我确保只有一个线程会在给定坐标处写入,是否会触发某种锁定机制?
【问题讨论】:
标签: c# arrays multithreading
就并发问题而言,只要您的线程不同时读取或写入数组的同一部分,您就可以了。不过,由于“False Sharing”危险,您可能会看到速度变慢,因此当线程数增加时,您可能需要注意意外的变慢。
【讨论】:
如果我确保只有一个线程会在给定坐标处写入
那么你就安全了。假设您不调整数组大小等。
如果您现在使用 for 循环,您可能只需切换到 Parallel.For(0, n, method)
【讨论】: