Beruflich Dokumente
Kultur Dokumente
Learning Outcomes
CT074-3-2
Concurrent Programming
Learning Outcomes
CT074-3-2
Concurrent Programming
Concepts
process interference
mutual exclusion
Practice
thread interference in shared Java objects
mutual exclusion in Java (synchronized
objects/methods).
CT074-3-2
Concurrent Programming
Concurrent Programming
CT074-3-2
Concurrent Programming
Interference
Case Study: Ornamental garden problem:
People enter an ornamental garden through either of
two turnstiles. Management wishes to know how many
are in the garden at any time.
Garden
West
Turnstile
people
East
Turnstile
Concurrent Programming
Applet
Garden
east,west
init()
go()
eastD,
westD,
counterD
Turnstile
run()
people
Counter
increment()
display
display
NumberCanvas
setvalue()
Concurrent Programming
CT074-3-2
Concurrent Programming
Turnstile class
class Turnstile extends Thread {
NumberCanvas display;
Counter people;
Turnstile(NumberCanvas n,Counter c)
{ display = n; people = c; }
The run()
method exits
and the thread
terminates
after
Garden.MAX
visitors have
entered.
Concurrent Programming
10
Counter class
class Counter {
int value=0;
NumberCanvas display;
Counter(NumberCanvas n) {
display=n;
display.setvalue(value);
}
void increment() {
int temp = value;
//read value
Simulate.HWinterrupt();
value=temp+1;
//write value
display.setvalue(value);
}
}
CT074-3-2
Concurrent Programming
Hardware interrupts
can occur at
arbitrary times.
The counter
simulates a
hardware interrupt
during an
increment(),
between reading and
writing to the shared
counter value.
Interrupt randomly
calls
Thread.sleep()
to force a thread
switch.
11
CT074-3-2
Concurrent Programming
12
Group Discussion
Why?
CT074-3-2
Concurrent Programming
13
Summary
CT074-3-2
Concurrent Programming
14
Learning Outcomes
CT074-3-2
Concurrent Programming
15
Concurrent Programming
16
west
PC
program
counter
shared code
increment:
read value
east
PC
program
counter
write value + 1
CT074-3-2
Concurrent Programming
17
CT074-3-2
Concurrent Programming
18
acquire
lock
release
lock
}
CT074-3-2
Concurrent Programming
19
Concurrent Programming
20
CT074-3-2
Concurrent Programming
Why is this
less
elegant?
21
Summary
Concepts
process interference
mutual exclusion
Models
model checking for interference
modeling mutual exclusion
Practice
thread interference in shared Java objects
CT074-3-2
Concurrent Programming
22
References
CT074-3-2
Concurrent Programming
23
Q&A
CT074-3-2
Concurrent Programming
24