\begin{slide}{Klassische Nebenläufigkeit}

  \begin{itemize}
  \item 
    Synchronisation von Prozessen (Threads) durch Sperren (Locks)
  \item
    dadurch Schutz kritischer Code-Abschnitte 
    (für atomaren Zugriff auf gemeinsame Ressourcen)
  \item
    Realisierungen: z. B. wait/notify in Java
  \item 
    die klassische Beispiel-Aufgabe: 5 Philosophen
  \end{itemize}


\end{slide}

\begin{slide}{Sicherer Datenaustausch}

  \begin{itemize}
  \item gemeinsamer Speicherbereich, aber exklusive Zugriffe durch Locks
  \item Speicherzellen mit atomaren Zugriffen: Semaphore

    Haskell: MVar, Chan
  \item lokale Parameterübergabe zwischen Co-Routinen 

    Scala: Actor, Ada: Rendezvous
  \end{itemize}
  
\end{slide}
