并行ile ilgili bir soru [这是一个英语论坛] [英] Parallel ile ilgili bir soru [this is an English speaking forum]

查看:63
本文介绍了并行ile ilgili bir soru [这是一个英语论坛]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Merhabalar,
.Net 3.5 da paralelişlemlerile ilgili kod ararken sizin kodunuzçıktıkarşıma. Azenağıdakigibi birişlemdeniyorum,bazençalışıyor,bazen未绑定数组hatasıveriyor,bazen结果listesine 1000000değereklenmesi gerekiyorken 990000〜nesne ekleniyor,ayrıca通常fordanyavaşsürüyor.

Merhabalar,
.Net 3.5 da paralel işlemler ile ilgili kod ararken sizin kodunuz çıktı karşıma. Aşağıdaki gibi bir işlem deniyorum, bazen çalışıyor, bazen unbound array hatası veriyor, bazen result listesine 1000000 değer eklenmesi gerekiyorken 990000~ nesne ekleniyor, ayrıca normal fordan yavaş sürüyor.

int[] range = Enumerable.Range(0, 1000000).ToArray();<br />
           List<double> result = new List<double>();<br />
           Parallel.ForEach(range, i =><br />
                                       {<br />
                                           double d = i + (i - 1000) / 500;<br />
                                           result.Add(d);<br />
                                       });



Halaçalışandüzgünbir paralleldöngükodubulamadım,yardımcıolursanızçoksevinirim,teşekkürler.



Hala çalışan düzgün bir parallel döngü kodu bulamadım, yardımcı olursanız çok sevinirim, teşekkürler.

推荐答案

我用Google翻译来理解您的问题.并行将加快处理速度.您所做的是并行的.但是我怀疑它不是完全实现的,如果您要处理大量的代码,我可以告诉您上面的代码中会有问题.原因是您具有相同的输出(结果),但是由于并行处理,序列将被弄乱.处理它的唯一方法是在这里不使用并行处理.从技术上讲,您可以使用Array而不是list(因为您已经知道结果的大小为1000000了).并做一个结果[i] = i +((double)i-1000)/500;

阅读有关线程的更多信息,您将更好地了解它们的工作方式.
I used google translate to understand your question. Parallel will speed up things. What you did is parallel. But i suspect it is not implemented corectly & if you are dealing with large number, i can tell you will have problems in above code. The reason is you have same output (result) but the sequence will be messed up, due to parallel processing. Only way to deal with it is not to use parallel processing here. Technically you can use Array instead of list (as you already know the size of result its 1000000 anyway). And do a result[i] = i + ((double)i-1000)/500;

Read more about threads, you will get better idea how they work.


这篇关于并行ile ilgili bir soru [这是一个英语论坛]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆