1
69
你不能这样做。
但是…这是一个反模式,因为您已经有效地序列化了循环,因为每个线程都将锁定
您需要做的是添加子总计,然后像这样在末尾合并它们:
您可以在msdn上找到关于这一点的进一步讨论: http://msdn.microsoft.com/en-us/library/dd460703.aspx 插头: 您可以在第2章的 A Guide to Parallel Programming 以下也绝对值得一读… |
2
16
|
3
5
你的猜测是正确的。
当你写作时
如果两个线程同时读取字段,则第一个线程所做的更改将被第二个线程覆盖。
你需要使用
|
4
4
增加long不是原子操作。 |
5
4
我认为很重要的一点是要区分这个循环不能进行并行划分,因为正如上面所提到的,循环的每个迭代都依赖于先前的迭代。parallel for是为显式并行任务而设计的,例如像素缩放等,因为循环的每个迭代在其迭代之外都不能有数据依赖关系。
上面是一个代码示例,它允许对并行性进行简单的分区。然而,警告一句,并行性是要付出代价的,即使我上面作为例子使用的循环也太简单了,不必为它费心,因为设置时间比通过并行性节省的时间要长。 |
6
3
似乎没有人提到一个重要的点:对于数据并行操作(如操作),使用plinq而不是
上面的代码段使用
|
7
-1
如果此代码中有两个参数。 例如
我们该怎么办?我猜必须使用阵列! |
drainzerrr · Go锁定结构的一部分 6 年前 |
Azim · 使用java 8并行处理图像 6 年前 |
user8005765 · Karatsuba-多项式与CUDA相乘 6 年前 |
Adi · 并行读取大型XSLT字符串 6 年前 |
A.J · 同时运行两个python文件 6 年前 |
Kristofer · 当索引设置为私有时,如何确保访问缓冲区是私有的 6 年前 |