私のプロジェクトでは、foreachループで何度も何度も何かしなければならないので、私はそれを約6-7時間待たなければなりません。例えばC#でマルチスレッドを使用するには?
:私がチェックする80件のドキュメントを持っている=>約8時間
foreach (var doc in docs)
{
bool valid = checkIsValid(doc); // about 2 min per doc
if (vaid)
{
doThing(doc); // about 5 min per doc
}
else
{
delete(doc); // about 20s per doc
}
}
だから、私が実行しているとき、私は大量のリソースを持って、同じ時間で、これらのものが使用されていません確認することができます考えます上記のコード。そして、私はC#がマルチスレッド機能を持っていることを知っています(私は何が提供できるのか分かりません)。
私のプロジェクトで使用できますか?私のプロジェクトでどのように使用するのですか?
理想:80人のドキュメントが同時にチェックされており、80スレッドが終了したときにforeachループが終了します。
foreach (var doc in docs)
{
//new thread start
bool valid = checkIsValid(doc); // about 2 min per doc
if (vaid)
{
doThing(doc); // about 5 min per doc
}
else
{
delete(doc); // about 20s per doc
}
//thread die
}
上で動作し、適切に考慮して作成したタスク(スレッド)を使用するには、https://msdn.microsoft.com/en-us/library/system(Parallel.ForEachを試してみました.threading.tasks.parallel.foreach(v = vs.110).aspx)? –
@DovydasSopaいいえ、私は持っていません。私はそれをチェックします。ありがとう –
あなたは80のコアを持っていない限り、80のスレッドはCPUを奪います。何もしようとする前にマルチスレッドを学ぶべきです。間違ってしまうのはとても簡単です。また、実際のアルゴリズムの複雑さをチェックしましたか?何かを削除するには20秒かかる*巨大*。 –