XXXXX XXXXX Source: Executable: Comment: XXXXX XXXXX
XXXXX XXXXX S_T001 E_T001 Synchroner Start aller Threads (aus einem Array).
Wartet bis alle Threads abgearbeitet sind.
Angabe wie viele Threads maximal gleichzeitig laufen - möglich.
+ Zeitmessung (wie lange jeder Thread läuft)
   
XXXXX XXXXX S_T002 E_T002 Funktionen in ein ThreadPool eintragen.
ThreadPool Threads are background Threads!
   
XXXXX XXXXX S_T003 E_T003 Competition:
3 Läufer (Tick, Trick und Track) = 3 Threads.
Nach 10 Runden versucht sich jeder Läufer in die Ergebnisliste einzutragen.
-> Eintragen (nur eine Liste!) mit Sperrmechanismus = ATOMAR -> lock
lock verwendet ein Sync-Object
   
XXXXX XXXXX S_T004 E_T004 Competition ähnlich wie Thread Beispiel T003.
Die Methode zum Eintragen ist hier "Synchronized" (wie "lock")
-> Der Erste wird zuerst abgearbeitet.
-> Danach der Zweite.
-> Danach der Dritte.
u.s.w.
   
    S_T005 E_T005 Dateiverzeichnis wird rekursiv durchlaufen.
Eine Statistik über alle Dateien wird dabei in einem Dictionary <string, List<FileInfo>> erstellt.
Für jedes rekursive Durchlaufen eines Dateiverzeichnisses wird ein Thread erzeugt.
Jeder Thread wird in einer List<Thread> gemerkt.
Mit der Auswertung wird solange mit Join gewartet, bis alle Threads fertig sind.
   
    S_T006 E_T006 Ähnlich wie Thread Beispiel T005 (allerdings mit ThreadPool).
Dateiverzeichnis wird rekursiv durchlaufen.
Eine Statistik über alle Dateien wird dabei in einem Dictionary <string, List<FileInfo>> erstellt.
Für jedes rekursive Durchlaufen eines Dateiverzeichnisses wird ein Thread erzeugt.
Jeder Thread wird dabei in einem ThreadPool eingetragen.
Das ThreadPool wurde in Main() konfiguriert (SetMaxThreads).
Das Dictionary wird mit lock gesichert, damit jeweils nur ein Thread seine Daten eintragen kann.
Mit der Auswertung wird solange gewartet bis alle Threads fertig sind (Interlocked.Equals).