In meinem Projekt muss ich viel in einer foreach-Schleife tun, die ich 6-7 Stunden warten muss.Wie wird Multi-Thread in C# verwendet?
zum Beispiel: Ich habe 80 docs => ca. 8 Stunden überprüfen
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
}
}
Also, ich betrachten kann ich diese Dinge in der gleichen Zeit überprüfen, die ich viele Ressourcen verwendet nicht, wenn der Lauf über dem Code. Und ich finde, C# hat eine Multithread-Funktion (ich weiß nicht, was es bieten kann).
Kann ich es in meinem Projekt verwenden? Wie benutze ich es in meinem Projekt?
ideal: 80 Dokumente werden zur gleichen Zeit eingecheckt und die foreach-Schleife wird beendet, wenn 80 Threads gestorben sind.
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
}
Haben Sie versucht, Parallel.ForEach (https://msdn.microsoft.com/en-us/library/system .threading.tasks.parallel.foreach (v = vs.110) .aspx)? –
@DovydasSopa Nein, habe ich nicht. ich werde es prüfen. Danke –
80 Threads werden die CPU hoggen, wenn Sie 80 Kerne haben. Sie sollten * Multithreading lernen *, bevor Sie etwas versuchen, es ist sehr leicht, es falsch zu verstehen. Haben Sie die Komplexität Ihrer aktuellen Algorithmen überprüft? 20 Sekunden, um etwas zu löschen, scheint * riesig *. –