Presentation is loading. Please wait.

Presentation is loading. Please wait.

Concurrent Programing:

Similar presentations


Presentation on theme: "Concurrent Programing:"— Presentation transcript:

1 Concurrent Programing:
The LAB This lecture has too many repititious slides. The process fork/exec animation should be moved up. It should be motivated by first presenting ProcessCreate. Then showing problems with a web server handing off an open network connection. The complexity of ProcessCreate leads to fork/exec. Clarify the distinction between the values of the process ids and the return value of fork.

2 Sun’s Java documentation
More Resources Sun’s Java documentation Modern Operating Systems (2nd Edition) by Andrew Tanenbaum (ISBN-10: ) Operating System Concepts with Java by Abraham Silberschatz, Peter Baer Galvin, Greg Gagne (ISBN-10: X) Concurrent Programming in Java: Design Principles and Patterns by Doug Lea (ISBN-10: )

3 Always hold lock when operating on a condition var
Rules for Monitors Always hold lock when operating on a condition var Grab lock at beginning of function, release at end Always test predicated state in while loop while(condition == false) { cv.await(); } NOT if(condition == false) {cv.await();} while makes signal a hint (Almost) never use sleep

4 Java documentation from Sun
The absence of block-structured locking removes the automatic release of locks that occurs with synchronized methods and statements. In most cases, the following idiom should be used: Lock l = ...; l.lock(); try { // access the resource protected by this lock } finally { l.unlock(); }

5 Java provides convenient mechanism.
Using Locks Correctly Java provides convenient mechanism. import java.util.concurrent.locks.ReentrantLock; aLock.lock(); try { } finally { aLock.unlock(); } return 0;

6 super calls the super-class version of the method
Using Locks Correctly super calls the super-class version of the method public class RogueCoarse extends GalleryRogue{ RogueCoarse(String title, int _pauseInterval, int _maxInterval, GalleryPanel _panel, int _color) { super(title, _pauseInterval, _maxInterval, _panel, _color); lanes = _panel.getLaneLocks(); }

7 static fields belong to class, not object
Using Locks Correctly static fields belong to class, not object public class RoguePurple extends GalleryRogue{ private static ReentrantLock rogueLock = new ReentrantLock(true); private static Condition blueHere = rogueLock.newCondition(); private static Condition purpleDone private static int red_lane; }


Download ppt "Concurrent Programing:"

Similar presentations


Ads by Google