Logo

teaching

data structures and software dependability

computer science department

brandenburg university of technology cottbus - senftenberg

Introduction into Concurrency

Lecture, Prof. Dr.-Ing. M. Heiner, WS 2021/2022
In case of demand, this course will be given in English.

Module
11884 - Introduction into Concurrency
12348 - Einführung in die Nebenläufigkeit

latest update: February 03, 2022, at 03:06 PM


back2lecture

Materials for Lectures

slides, demo programs, Petri nets;

  • Grey entries provide supplementary material, not covered in the lectures.
  • The blue line indicates the current state of the lecture. Material above the blue line is released, material below the blue line is a preliminary preview, potentially subject to change.
(1) Introduction, Motivation dependability engineering of reactive systems.pdf (27 p.)
(1) reactive systems –
DEMO production cell
(2) reactive systems –
DEMO concurrent pushers
(3) embedded systems –
DEMO Cruise Control
(4) concurrent systems –
DEMO competing sorting
intro (M&K).pdf
4up version.pdf
(2) Introduction Petri nets
snoopy examples
(used in the slides)
procon, bounded.pn
procon, unbounded.pn
travelPreparation.pn

modelling epidemics/pandemics

coverability graph.pdf

(3) Basic process concepts
(3.1) Processes and threads
how to create threads (M&K).pdf
4up version.pdf
Petri nets for ThreadDemo[i].pdf (4 p.)

Concurrency in Java

threadDemo1-2.pn
threadDemo3.pn
how to create threads with GUI (M&K).pdf
4up version.pdf

stand alone version of ThreadDemo example by Magee&Kramer

(3.2) Process interactions
(interference)
Botanical Garden (M&K).pdf
4up version.pdf
modelling GardenTui.java.pdf

video motivating coloured Petri nets

(1) Java

(2) PascalFC

garden.pn (buggy interface visualisation in web animation; download for token game)

garden with constant.pn

garden.ctl

introducing colour

coloured gardens (colpn not supported by Patty)

(3.3) Semaphores as ADT

semaphore implementation in Java (M&K).pdf

Semaphore.java
BinSemaphore.java
(3.4) Mutual exclusion synchronisation (competition)
mutex pattern
MutexDemo.java
MutexDemoBinSemaphore.java
GardenTuiSema.java
mutex.pn

invariants

invariant analysis, examples.sld.pdf (28 p.)

deadlock pattern

dining phils.pdf

stubborn set reduction.pdf

deadlock.pn
philSlide.pn
phil5.pn
phil15.pn
pphil2.pn
phil.colpn
marcie-phil-help-me.txt
system deadlocks (M&K).pdf
4up version.pdf

bdd crash course

philosophers demo (M&K).zip

(3.5) Event synchronisation (cooperation)
structural properties.sld2.pdf (24 p.)
production cell.sld2.pdf
concurrent pushers.sld2.pdf
sm.pn
mg.pn
fc-sc-not-live.pn
fc-sc-not-bnd.pn
efc_dtp.pn
efc_not_dtp.pn
siphon-trap-demo.pn
non-monotone_live.pn

net classes

Temporal logics

informal introduction.sld2.pdf

travelPreparation.pn
travelPreparation-charlie.ctl
travelPreparation-marcie-idd.ctl
travelPreparation-marcie-bdd.ctl
procon2_sequential.pn
procon3_parallel.pn
client/server pattern, selective wait

the problem is choice.sld2.pdf

deadlock.pn
printer system.spped
printer system1.spped
printer system2.spped

(4) Compact language means

monitors, a bit of history.pdf

gardens without synch.pdf
gardens via critical region.pdf
procon via conditional critical region.pdf
gardens via monitor.pdf
procon via monitor.pdf
shared object via rendezvous.pdf
dining phils via rendezvous.pdf
procon via rendezvous.pdf
procon, unbuffered via channels.pdf
procon, buffered via channels.pdf
procon, unbuffered via channels.pn
procon, buffered via channels.pn

(buggy web animation: logical transition not highlighted, behaviour not correct; download for token game)

(5) Summary

software2pn - an overview.sld2.pdf

Diaz1986, lncs255.pdf

read vs inhibitor arcs (xpn)
read vs inhibitor arcs (pdf)
(6) Distributed algorithms

prime sieve via channels.pdf

gcd-p1.ada.pdf - gcd-p2.ada.pdf - gcd-p3.ada.pdf - gcd-p4.ada.pdf - gcd-p5.ada.pdf

gcd.colpn - gcd.pdf

rendezvous_concept.colpn -
rendezvous_concept.pdf

(7) Java 5.0
tutorial "concurrency in JDK 5.0"
Going atomic

Beispiele zu [Nowak 2005]

instead of a closing remark

“Thread-safe code is code that will work even if many Threads are executing it simultaneously. Writing it is a black art. It is extremely difficult to debug since you can’t reproduce all possible interactions between Threads. You have to do it by logic. In a computer, something that happens only one in a billion times must be dealt with because on average it will happen once a second. To write code that will run stably for weeks takes extreme paranoia.

[ source ]

… the end …

Any comments or questions are welcome. Please direct them to monika [period] heiner [snail] b-tu [period] de Privacy Policy