In der heutigen Zeit der Multi-Core-Prozessoren und Cloud-Computing ist die Beherrschung der parallelen Programmierung entscheidend für die Entwicklung performanter und skalierbarer Anwendungen. Dieser praxisorientierte Workshop vermittelt Ihnen das fundamentale Wissen und die praktischen Fertigkeiten, um moderne .NET-Anwendungen mit optimaler Parallelität zu entwickeln. Wie wird "async/await" richtig genutzt? Auf welche Probleme muss man beim Verwenden von Threads oder Tasks achten? Was ist der Unterschied zwischen Task und Thread? Warum bekomme ich in meiner Applikation eine Exception mit der Information "wrong thread"? Wie sollten Threads synchronisiert werden? Soll async/await auch in Server-Anwendungen zum Einsatz kommen? Diese kritischen Fragen und viele mehr beantwortet dieser Workshop mit praxisnahen Beispielen und bewährten Lösungsansätzen.
Grundlagen der parallelen Programmierung:
- Multithreading Overview und Architekturprinzipien
- Unterscheiden von CPU-bound und I/O bound Funktionalitäten
- Performance-Metriken und Profiling-Techniken
Thread-Management und Synchronisation:
- Features der Thread Class und Lifecycle-Management
- Race conditions und Deadlocks mit Threads - Erkennung und Vermeidung
- ThreadPool für das automatische Management von Threads mit Vorteilen und Einschränkungen
- Synchronization mit Locks, Mutexes, Semaphores und Monitors
- Unified Cancellation und Cooperative Cancellation Patterns
Task Parallel Library (TPL):
- Tasks im Vergleich zu Threads - Wann verwende ich was?
- Chaining, Continuations und Aggregation von Tasks
- Exception Handling in parallelen Szenarien
- Parallel Class mit Daten- und Funktions-Parallelisierung
- In-memory LINQ parallelisieren mit Parallel LINQ (PLINQ)
Asynchrone Programmierung:
- Async Pattern Evolution: APM, EAP, TAP
- Event-based Async Pattern (EAP)
- Task-based Async Pattern (TAP) - Die moderne Lösung
- Asynchrone Programmierung in Windows Applikationen (WPF, WinUI)
- Asynchrone Programmierung in ASP.NET Core - Scalability Patterns
Erweiterte Konzepte:
- Timers in .NET - Verschiedene Implementierungen und Use Cases
- Synchronized Collections und Thread-Safe Data Structures
- Data Flows und Pipeline-Architekturen
- Producers and Consumers with .NET Channels
- Memory Models und Cache Coherency
Tooling und Best Practices:
- Visual Studio 2022 Features für Multi-Threaded Programmierung
- Debugging und Diagnostics für parallele Anwendungen
- Performance Best Practices und Anti-Patterns
- Testing von asynchronem und parallelem Code