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();
        }