📚 The CoCalc Library - books, templates and other resources
cocalc-examples / martinthoma-latex-examples / presentations / Programmieren-Tutorium / Tutorium-13 / tutorium-13.tex
132931 viewsLicense: OTHER
\documentclass[usepdftitle=false,hyperref={pdfpagelabels=false}]{beamer}1\usepackage{../templates/myStyle}23\begin{document}4\title{\titleText}5\subtitle{Five-in-A-Row, Multithreading}6\author{\tutor}7\date{\today}8\subject{Programmieren}910\frame{\titlepage}1112\frame{13\frametitle{Inhaltsverzeichnis}14\setcounter{tocdepth}{1}15\tableofcontents16\setcounter{tocdepth}{2}17}1819%\AtBeginSection[]{20% \InsertToC[sections={\thesection}] % shows only subsubsections of one subsection21%}2223\section{Einleitung}24\subsection{Quiz}25\begin{frame}{Quiz}26\begin{minipage}[b]{0.45\linewidth}27\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny]{java}{QuizMain.java}28\end{minipage}29\hspace{0.5cm}30\begin{minipage}[b]{0.45\linewidth}31\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny]{java}{QuizSum.java}32\vspace{3.5cm}33\end{minipage}34\end{frame}3536\begin{frame}{Quiz: Race-Condition}37\begin{itemize}[<+->]38\item \myCode{bigSum++;} ist nicht atomar:39\item[] 3 Operationen: Wert holen, Wert erhöhen, Wert schreiben40\item[$\Rightarrow$] Ergebnis ist zufällig41\item Alles im Bereich $[BIG\_NR, 50 \cdot BIG\_NR]$ ist möglich:42\begin{enumerate}43\item Thread 1 holt sich den Wert von \texttt{bigSum}44\item Thread 2 - 50 laufen durch45\item Thread 1 erhöht den zuvor geholten Wert um 146\item Thread 1 überschreibt \texttt{bigSum} mit 247\item Thread 1 läuft durch48\end{enumerate}49\item Sind kleinere Werte möglich?50\end{itemize}51\end{frame}5253\begin{frame}{Quiz: Race-Condition}54Sind kleinere Werte als \texttt{BIG\_NR} für \texttt{bigSum} möglich?55\begin{enumerate}[<+->]56\item[] Ja:57\item Thread 1 holt sich den Wert von \texttt{bigSum}58\item Thread 2 holt sich den Wert von \texttt{bigSum}59\item Thread 3 - 50 laufen durch60\item Thread 2 läuft bis 1 vorm Ende durch61\item Thread 1 erhöht Wert im Register von 0 auf 1 und schreibt 162\item Thread 2 hohlt sich die 1 aus \texttt{bigSum}63\item Thread 1 läuft durch64\item Thread 2 erhöht Wert im Register von 1 auf 2 und schreibt 265\item[$\Rightarrow$] Alle Werte in $[2, 50 \cdot BIG\_NR]$ sind möglich!66\item[] Wie löst man das Problem?67\end{enumerate}68\end{frame}6970\begin{frame}{Quiz}71Wie löst man das Problem:?7273Mit74\href{http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html}{AtomicLong}75aus76\href{http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/package-summary.html}{java.util.concurrent}77\end{frame}7879\begin{frame}{Quiz}80\begin{minipage}[b]{0.45\linewidth}81\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny]{java}{AnswerMain.java}82\end{minipage}83\hspace{0.5cm}84\begin{minipage}[b]{0.45\linewidth}85\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny]{java}{AnswerSum.java}86\vspace{3.5cm}87\end{minipage}88\end{frame}8990\section{Abschlussaufgaben}91\subsection{Abschlussaufgaben}92\begin{frame}{Abschlussaufgaben}93\begin{itemize}94\item Herangehensweise95\begin{itemize}96\item Genau lesen97\item Frühzeitig lösen, viel Testen (Am besten schon heute!)98\item Bei Unklarheiten frühzeitig fragen!99\end{itemize}100\item Ausgabe101\begin{itemize}102\item Genau die erwartete Ausgabe liefern103\item An \myCode{toString()} denken104\end{itemize}105\item Trennung von Logik und Shell106\begin{itemize}107\item Siehe \href{https://github.com/MartinThoma/prog-ws1213/tree/master/Blatt-05.5}{Lösung zur Aufgabe 5.5}108\end{itemize}109\item Code110\begin{itemize}111\item \myCode{equals()}, \myCode{compareTo()} nutzen wenn sinnvoll112\item Exceptions einbauen, sollte der Nutzer aber nie sehen!113\item Gute JavaDoc!114\end{itemize}115\end{itemize}116\end{frame}117118\begin{frame}{Abschlussaufgaben}119Bepunktung:120\begin{itemize}121\item Punkte für Funktionalität122\item Punkte für Programmier-Stil123\item Nicht unbedingt gleich gewichtet124\end{itemize}125\end{frame}126127% http://www.tutorialspoint.com/java/java_multithreading.htm128%TODO David Kulicke - Nr. 13129130\section{Spiele}131\subsection{Spiele}132\begin{frame}{Spiele}133Anleitung für Snake, Tetris, Sokuban, Breakout \dots ist \href{http://zetcode.com/tutorials/javagamestutorial/}{hier}.134\end{frame}135136\section{Multithreading}137\subsection{Multithreading}138\begin{frame}{Multithreading}139\begin{itemize}140\item \href{http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html}{Runnable}141\item \href{http://www.vogella.com/articles/JavaConcurrency/article.html}{Java Concurrency (Multithreading) - Tutorial}142\item \href{http://www.tutorialspoint.com/java/java_multithreading.htm}{Java - Multithreading}143\end{itemize}144\end{frame}145146\section{Abspann}147\subsection{Kommende Tutorien}148\begin{frame}{Kommende Tutorien}149\begin{itemize}150\item[1.] 28.01.2013: Abschlussprüfunsvorbereitung151\item[0.] 04.02.2013: Abschlussprüfunsvorbereitung152\item[-] 10.02.2013: Ende der Vorlesungszeit des WS 2012/2013 (\href{http://www.kit.edu/studieren/2873.php}{Quelle})153\end{itemize}154\end{frame}155156\framedgraphic{Vielen Dank für eure Aufmerksamkeit!}{../images/Teach-yourself-C++-in-21-days.png}157158\end{document}159160161