Softwarekonferenz für parallele, nebenläufige
und asynchrone Programmierung und HPC
Heidelberg, Print Media Academy, 6.-8. März 2018

// Parallel ohne Locks: Was gilt in .NET und was in Java?

In der nebenläufigen und parallelen Programmierung ist korrekte Synchronisation das A und O. Weil Synchronisation jedoch teuer ist, möchte man dies minimieren und womöglich ganz vermeiden. In welchen Fällen ist Synchronisation unnötig? Wie kann man ohne Locks mit atomaren Operationen und Memory Barriers korrekte nebenläufige Interaktionen designen? Um dies zu beantworten, muss man das Speichermodell der Programmiersprache kennen.

Dieser Vortrag erklärt das Memory Model von .NET und von Java und zeigt deren Gemeinsamkeiten, aber auch subtile Unterschiede. Er beleuchtet die Garantien, aber auch die Nicht-Garantien, denen man nicht immer Rechnung trägt. Daraus leiten wir ab, wie man einerseits auf einfache Weise Synchronisation minimieren kann. Und andererseits sehen wir, wie diffizil lock-freie Programmierung eigentlich ist.

Vorkenntnisse
Grundverständnis der nebenläufigen/parallelen Programmierung ist empfohlen. Erfahrung in .NET, C# und Java ist nützlich, aber nicht zwingend.

Lernziele
* Die notwendigen Fälle für Synchronisation in der nebenläufigen und parallelen Programmierung kennen.
* Das Speichermodell von .NET und von Java mit deren Garantien verstehen und die Gemeinsamkeiten und Unterschiede der beiden kennen.
* Die Mechanismen der atomaren Operationen, volatile Zugriffe und Memory Barriers kennen und wissen, wie man diese für lock-freie Programmierung benutzen kann.
* Einfache und klare Designansätze kennen, mit denen sich Locks und Synchronisation in der Praxis grundsätzlich vermeiden lässt.


// Prof. Dr. Luc Bläser Prof. Dr. Luc Bläser

ist Informatikprofessor an der Hochschule für Technik Rapperswil und leitet das Microsoft Innovation Center in Rapperswil. Bläser befasst sich als Forschungsthema mit Nebenläufigkeit und Parallelität.