\begin{slide}{Software Transactional Memory}

Nachteil von Locks: Programmierung ist nicht modular.

Anderer Ansatz: spekulative Nebenläufigkeit:

Transaktionen mit optimistischer Ausführung

\begin{itemize}
\item innerhalb einer Transaktion: Protokollierung der Speicherzugriffe
\item Abschluß (Commit) der Transaktion nur,
  wenn Protokoll konsistent ist
\item sonst später erneut ausführen und Protokoll validieren
\item eine abgebrochene Transaktion muß unbeobachtbar sein
\end{itemize}

Clojure: Transactions, Haskell: STM (das Typsystem hilft!)

\end{slide}
