Parallel Programming Exercise Session 11Exercise Session 11 1 Outline 2 1.Feedback: Assignment 10...
Transcript of Parallel Programming Exercise Session 11Exercise Session 11 1 Outline 2 1.Feedback: Assignment 10...
![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](https://reader034.fdocuments.us/reader034/viewer/2022050519/5fa30e1325a8473fa232f596/html5/thumbnails/1.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022050519/5fa30e1325a8473fa232f596/html5/thumbnails/2.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022050519/5fa30e1325a8473fa232f596/html5/thumbnails/3.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022050519/5fa30e1325a8473fa232f596/html5/thumbnails/4.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022050519/5fa30e1325a8473fa232f596/html5/thumbnails/5.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022050519/5fa30e1325a8473fa232f596/html5/thumbnails/6.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022050519/5fa30e1325a8473fa232f596/html5/thumbnails/7.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022050519/5fa30e1325a8473fa232f596/html5/thumbnails/8.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022050519/5fa30e1325a8473fa232f596/html5/thumbnails/9.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022050519/5fa30e1325a8473fa232f596/html5/thumbnails/10.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022050519/5fa30e1325a8473fa232f596/html5/thumbnails/11.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022050519/5fa30e1325a8473fa232f596/html5/thumbnails/12.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022050519/5fa30e1325a8473fa232f596/html5/thumbnails/13.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022050519/5fa30e1325a8473fa232f596/html5/thumbnails/14.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022050519/5fa30e1325a8473fa232f596/html5/thumbnails/15.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022050519/5fa30e1325a8473fa232f596/html5/thumbnails/16.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022050519/5fa30e1325a8473fa232f596/html5/thumbnails/17.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022050519/5fa30e1325a8473fa232f596/html5/thumbnails/18.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022050519/5fa30e1325a8473fa232f596/html5/thumbnails/19.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022050519/5fa30e1325a8473fa232f596/html5/thumbnails/20.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022050519/5fa30e1325a8473fa232f596/html5/thumbnails/21.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022050519/5fa30e1325a8473fa232f596/html5/thumbnails/22.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022050519/5fa30e1325a8473fa232f596/html5/thumbnails/23.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022050519/5fa30e1325a8473fa232f596/html5/thumbnails/24.jpg)
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](https://reader034.fdocuments.us/reader034/viewer/2022050519/5fa30e1325a8473fa232f596/html5/thumbnails/25.jpg)
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