parallel programming exercise session 11exercise session 11 1 outline 2 1.feedback: assignment 10...

25
Parallel Programming Exercise Session 11 1

Upload: others

Post on 09-Aug-2020

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Parallel Programming Exercise Session 11Exercise Session 11 1 Outline 2 1.Feedback: Assignment 10 2.Assignment 11 Feedback: Assignment 10 3 Task 1 – Monitors, Conditions and Bridges

Parallel ProgrammingExercise Session 11

1

Page 2: Parallel Programming Exercise Session 11Exercise Session 11 1 Outline 2 1.Feedback: Assignment 10 2.Assignment 11 Feedback: Assignment 10 3 Task 1 – Monitors, Conditions and Bridges

Outline

2

1. Feedback: Assignment 102. Assignment 11

Page 3: Parallel Programming Exercise Session 11Exercise Session 11 1 Outline 2 1.Feedback: Assignment 10 2.Assignment 11 Feedback: Assignment 10 3 Task 1 – Monitors, Conditions and Bridges

Feedback: Assignment 10

3

Page 4: Parallel Programming Exercise Session 11Exercise Session 11 1 Outline 2 1.Feedback: Assignment 10 2.Assignment 11 Feedback: Assignment 10 3 Task 1 – Monitors, Conditions and Bridges

Task 1 – Monitors, Conditions and Bridges

4

Only either 3 cars or one truck may be on the bridge at each moment.

Implement Classes BridgeMonitor and BridgeCondition

How to Test my Implementation?Implement method invariant() to check if the state is valid: at the end of a method there are never too many cars or trucks on the bridge

Page 5: Parallel Programming Exercise Session 11Exercise Session 11 1 Outline 2 1.Feedback: Assignment 10 2.Assignment 11 Feedback: Assignment 10 3 Task 1 – Monitors, Conditions and Bridges

Task 2 – BridgeMonitor

5

Page 6: Parallel Programming Exercise Session 11Exercise Session 11 1 Outline 2 1.Feedback: Assignment 10 2.Assignment 11 Feedback: Assignment 10 3 Task 1 – Monitors, Conditions and Bridges

Task 2 – BridgeCondition

6

Page 7: Parallel Programming Exercise Session 11Exercise Session 11 1 Outline 2 1.Feedback: Assignment 10 2.Assignment 11 Feedback: Assignment 10 3 Task 1 – Monitors, Conditions and Bridges

Task 2 – Discussion

7

Page 8: Parallel Programming Exercise Session 11Exercise Session 11 1 Outline 2 1.Feedback: Assignment 10 2.Assignment 11 Feedback: Assignment 10 3 Task 1 – Monitors, Conditions and Bridges

Task 3 – Semaphores and Databases

8

Use semaphores to implement login and logout database functionality that supports up to 10 concurrent users

Use barrier to implement 2-phase backup functionality.

Page 9: Parallel Programming Exercise Session 11Exercise Session 11 1 Outline 2 1.Feedback: Assignment 10 2.Assignment 11 Feedback: Assignment 10 3 Task 1 – Monitors, Conditions and Bridges

Task 3 – MySemaphore

9

Page 10: Parallel Programming Exercise Session 11Exercise Session 11 1 Outline 2 1.Feedback: Assignment 10 2.Assignment 11 Feedback: Assignment 10 3 Task 1 – Monitors, Conditions and Bridges

Task 3 – MyBarrier

10

Page 11: Parallel Programming Exercise Session 11Exercise Session 11 1 Outline 2 1.Feedback: Assignment 10 2.Assignment 11 Feedback: Assignment 10 3 Task 1 – Monitors, Conditions and Bridges

Task 3 – Discussion

11

Page 12: Parallel Programming Exercise Session 11Exercise Session 11 1 Outline 2 1.Feedback: Assignment 10 2.Assignment 11 Feedback: Assignment 10 3 Task 1 – Monitors, Conditions and Bridges

Assignment 11

• Multisensor System.

12

Page 13: Parallel Programming Exercise Session 11Exercise Session 11 1 Outline 2 1.Feedback: Assignment 10 2.Assignment 11 Feedback: Assignment 10 3 Task 1 – Monitors, Conditions and Bridges

Multisensor System

13

Page 14: Parallel Programming Exercise Session 11Exercise Session 11 1 Outline 2 1.Feedback: Assignment 10 2.Assignment 11 Feedback: Assignment 10 3 Task 1 – Monitors, Conditions and Bridges

Multisensor System

14

Page 15: Parallel Programming Exercise Session 11Exercise Session 11 1 Outline 2 1.Feedback: Assignment 10 2.Assignment 11 Feedback: Assignment 10 3 Task 1 – Monitors, Conditions and Bridges

Multisensor System

15

Implement two versions of the senor data set:a) One blocking version based on a readers-writers lock (LockedSensors.java).b) A lock-free version (LockFreeSensors.java)

Hints:

• Before you implement the readers-writers lock based version, start with a simple locked version in order to understand. Then try a readers-writers lock but be aware that the Java-implementation does not give fairness guarantees. What can this imply? In any case, you have the code from the lecture slides presenting a fair RW-Lock implementation.

• The lock-free implementation solutions does NOT rely on mechanisms such as Double-Compare- And-Swap. Also it does not rely on a lazy update mechanism. Somehow you have to make sure that with a single reference update you change all data at once. How?

Page 16: Parallel Programming Exercise Session 11Exercise Session 11 1 Outline 2 1.Feedback: Assignment 10 2.Assignment 11 Feedback: Assignment 10 3 Task 1 – Monitors, Conditions and Bridges

Readers-writers lock

16

Page 17: Parallel Programming Exercise Session 11Exercise Session 11 1 Outline 2 1.Feedback: Assignment 10 2.Assignment 11 Feedback: Assignment 10 3 Task 1 – Monitors, Conditions and Bridges

Readers-writers lock

17

Page 18: Parallel Programming Exercise Session 11Exercise Session 11 1 Outline 2 1.Feedback: Assignment 10 2.Assignment 11 Feedback: Assignment 10 3 Task 1 – Monitors, Conditions and Bridges

Readers-writers lock

18

Page 19: Parallel Programming Exercise Session 11Exercise Session 11 1 Outline 2 1.Feedback: Assignment 10 2.Assignment 11 Feedback: Assignment 10 3 Task 1 – Monitors, Conditions and Bridges

Readers-writers lock in Javadouble readSomething() { readerWriterLock.readLock().lock(); try { double value = retrieveDoubleValue(); return value; } finally { readerWriterLock.readLock().unlock(); }}

Void writeSomething(double new_value) { readerWriterLock.writeLock().lock(); try { storeDoubleValue(new_value); } finally { readerWriterLock.writeLock().unlock(); }}

19

No fairness guarantees!

Page 20: Parallel Programming Exercise Session 11Exercise Session 11 1 Outline 2 1.Feedback: Assignment 10 2.Assignment 11 Feedback: Assignment 10 3 Task 1 – Monitors, Conditions and Bridges

20

Readers-writers lock with monitors

Page 21: Parallel Programming Exercise Session 11Exercise Session 11 1 Outline 2 1.Feedback: Assignment 10 2.Assignment 11 Feedback: Assignment 10 3 Task 1 – Monitors, Conditions and Bridges

21

Readers-writers lock with monitors

Page 22: Parallel Programming Exercise Session 11Exercise Session 11 1 Outline 2 1.Feedback: Assignment 10 2.Assignment 11 Feedback: Assignment 10 3 Task 1 – Monitors, Conditions and Bridges

22

Readers-writers lock with monitors

Page 23: Parallel Programming Exercise Session 11Exercise Session 11 1 Outline 2 1.Feedback: Assignment 10 2.Assignment 11 Feedback: Assignment 10 3 Task 1 – Monitors, Conditions and Bridges

Problems with locks

23

Page 24: Parallel Programming Exercise Session 11Exercise Session 11 1 Outline 2 1.Feedback: Assignment 10 2.Assignment 11 Feedback: Assignment 10 3 Task 1 – Monitors, Conditions and Bridges

Lock free

24

Page 25: Parallel Programming Exercise Session 11Exercise Session 11 1 Outline 2 1.Feedback: Assignment 10 2.Assignment 11 Feedback: Assignment 10 3 Task 1 – Monitors, Conditions and Bridges

Lock-free

Object readSomething() { return atomicReference.get();}

Void writeSomething(Object new_object) { Object old_object; do { old_object = atomicReference.get(); // Check if we want to overwrite the latest data (i.e. only write newer or better data) if ( … ) { return; } } while (!atomicReference.compareAndSet(old_object, new_object));}

25