C# Multithreading bei Datei-E / a (Lesen)

Haben wir eine situation, wo unsere Anwendung verarbeitet werden muss, eine Reihe von Dateien, und statt ausführen dieser Funktion synchron, möchten wir beschäftigen multi-threading, um die workload-split unter verschiedenen threads.

Jedes Element der Arbeit ist:

1. Öffnen Sie eine Datei nur Lesen

2. Verarbeiten der Daten in der Datei

3. Schreiben der verarbeiteten Daten in einem Wörterbuch

Möchten wir ausführen, jede Datei die Arbeit an einem neuen thread?
Ist das möglich, und sollten wir besser die Verwendung der ThreadPool-oder laichen neue threads im Auge zu behalten, dass jedes Element der "Arbeit" dauert nur 30ms jedoch ist es möglich, dass Hunderte von Dateien die verarbeitet werden müssen.

Irgendwelche Ideen, um diese effizienter zu gestalten, begrüßt.

EDIT: Im moment sind wir die Nutzung der ThreadPool, um diese zu bewältigen. Wenn wir 500 Dateien verarbeiten wir radeln durch die Dateien und ordnen Sie jeder "Einheit von Bearbeitung" auf den threadpool verwenden QueueUserWorkItem.

Ist es geeignet, um die Verwendung der threadpool-für diese?

  • Wenn eine serielle Verarbeitung erforderlich ist vielmehr eine synchrone Verarbeitung, dann einfädeln ist definitiv der falsche Weg.
  • der Prozess oben aufgeführten Nummern 1 bis 3) sind eine komplette Einheit der Arbeit. wir haben vielleicht Hunderte von diesen zu erfüllen, ist nicht erforderlich, zu sychronously verarbeitet.
  • Es ist eine Verschwendung von Zeit. Sie brauchen mehr Laufwerke, nicht mehr CPU-Kerne/threads.
  • Definieren Sie "verarbeiten." Sind Sie im Grunde nur das Lesen der Datei, oder machst du irgendeine Art von CPU-intensive Arbeit an den Inhalten?
InformationsquelleAutor washtik | 2010-04-20
Schreibe einen Kommentar