public void PerformVariousThreadingPrinciples() { Threads threads = new Threads(); //Single-Core Multithreading mit asynchron und synchron option threads.PerformThreads(); Tasks tasks = new Tasks(); //Multi-Core Threading Objekt welches ausschliesslich asynchron läuft tasks.PerformTasks(); ThreadPool threadPool = new ThreadPool(); //Multi-Core Collection welche alle zu verrichtenden Aufgaben/Operationen enthält(Typ der Collection: Queue) threadPool.PerformThreadPoolThreads(); Parallelism parallelism = new Parallelism(); //Klasse mit der man sehr viele Operationen gleichzeitig verrichten kann. parallelism.PerformParallelClass(); Async_Await async = new Async_Await(); //Syntaktische schreibweise um eine Methode asynchron zu Spalten und auf einen Rückgabewert zu warten. async.PerformAsyncMethods(); //Ab hier werde ich Objekte und Klassen vorstellen welche asynchrone threads synchronisieren um konkurrierenden Zugriff zwischen Threads zu regulieren. Mutex mutex = new Mutex(); //"Mutual Exclusion"(Mutex) symbolisiert eine Systemweite blockade für Threads die versuchen auf einen bestimmten bereich des Codes zuzugreifen. mutex.PerformMutex(); Semaphore semaphore = new Semaphore(); //Semaphore bezeichnet ein limit die bestimmt wie viele Threads in einem bestimmten Teil des Codes erlaubt sind. semaphore.PerformSemaphore(); SpinLock spinLock = new SpinLock(); //Spinlock beschreibt eine systemweite blockade welche jedoch konstant den Zugriff abfragt und die CPU nicht unnötig besetzt. spinLock.PerformSpinLock(); SpinWait spinWait = new SpinWait(); //Ähnlich wie ein SpinLock aber es gibt keine Blockade sondern nur ein spin-basiertes Warten auf etwas. spinWait.PerformSpinWait(); Monitor monitor = new Monitor(); //Monitor ist eine Prozessweite blockade über konkurrierendem Zugriff. monitor.PerformMonitor(); }