Week 9, Class 3: Model-View-Controller Final Project Worth 2 labs Happens-Before ( SE-2811 Slide design: Dr. Mark L. Hornick Content: Dr. Hornick Errors:

Slides:



Advertisements
Similar presentations
50.003: Elements of Software Construction Week 6 Thread Safety and Synchronization.
Advertisements

Concurrency 101 Shared state. Part 1: General Concepts 2.
Threading Part 2 CS221 – 4/22/09. Where We Left Off Simple Threads Program: – Start a worker thread from the Main thread – Worker thread prints messages.
CS510 Concurrent Systems Class 5 Threads Cannot Be Implemented As a Library.
Discussion Week 3 TA: Kyle Dewey. Overview Concurrency overview Synchronization primitives Semaphores Locks Conditions Project #1.
1 Thread II Slides courtesy of Dr. Nilanjan Banerjee.
1 Concurrent Languages – Part 1 COMP 640 Programming Languages.
CDP 2013 Based on “C++ Concurrency In Action” by Anthony Williams, The C++11 Memory Model and GCCThe C++11 Memory Model and GCC Wiki and Herb Sutter’s.
Practical OOP using Java Basis Faqueer Tanvir Ahmed, 08 Jan 2012.
Internet Software Development Controlling Threads Paul J Krause.
JAVA MEMORY MODEL AND ITS IMPLICATIONS Srikanth Seshadri
Week 9, Class 3: Model-View-Controller Today Happens-Before Adapter and Façade Pattern (high-level) Tuesday: Project code due, 11pm Wednesday: Quiz Choose.
Week 3, Day 2: Threads Questions about Threads “Multithreading” in Swing Lab tomorrow: Quiz Lab 3: Threading! SE-2811 Slide design: Dr. Mark L. Hornick.
The Singleton Pattern SE-2811 Dr. Mark L. Hornick 1.
COMPSCI 230 S2C 2015 Software Design and Construction Synchronization (cont.) Lecture 4 of Theme C.
Concurrency Control 1 Fall 2014 CS7020: Game Design and Development.
Multiprocessor Cache Consistency (or, what does volatile mean?) Andrew Whitaker CSE451.
CS2852 Week 3, Class 2 Today Stacks Queues SE-2811 Slide design: Dr. Mark L. Hornick Content: Dr. Hornick Errors: Dr. Yoder 1.
Today Return Quiz Class Climate Survey Review SE-2811 Slide design: Dr. Mark L. Hornick Content: Dr. Hornick Errors: Dr. Yoder 1 SE3910 Week 10, Class.
Threads and Singleton. Threads  The JVM allows multiple “threads of execution”  Essentially separate programs running concurrently in one memory space.
Java Threads 11 Threading and Concurrent Programming in Java Synchronization D.W. Denbo Synchronization D.W. Denbo.
CS2852 Week 5, Class 2 Today Queue Applications Circular Queue Implementation Testing SE-2811 Slide design: Dr. Mark L. Hornick Content: Dr. Hornick Errors:
CS2852 Week 7, Class 1 Today Binary Search Tree Implementing add Implementing find Return Quiz 4 (second attempt) Both sections are graded SE-2811 Slide.
Today Final Project “Preview” Real-time concurrency Multithreading Options pthreads qthreads GPIO.h & GPIO.cpp Quiz tomorrow & Tuesday in lab SE-2811 Slide.
Week 9, Class 3: Java’s Happens-Before Memory Model (Slides used and skipped in class) SE-2811 Slide design: Dr. Mark L. Hornick Content: Dr. Hornick Errors:
Today Quiz not yet graded Final report requirements posted More on Multithreading Happens-Before in Java SE-2811 Slide design: Dr. Mark L. Hornick Content:
CS2852 Week 3, Class 2 Today Big-O runtime analysis Linked Lists Muddiest Point Lab Quiz Includes writing a method from ArrayList class (See next slide)
Week 7, Class 1: The Command Pattern (cont.) Get Ready for Poll Everywhere Labs 2 & 3 returned Lab 7 due this evening at 11pm Quiz tomorrow at start of.
CSCI1600: Embedded and Real Time Software Lecture 17: Concurrent Programming Steven Reiss, Fall 2015.
CS2910 Week 8, Class 2 Today Return Quiz Look at Schedule TCP implementation! Week 8, Monday Quiz on SMTP May include some questions requiring you to interpret.
Week 10, Day 3 Review for the quarter SE-2811 Slide design: Dr. Mark L. Hornick Content: Dr. Hornick Errors: Dr. Yoder 1.
Today Quiz not yet graded (Sorry!) More on Multithreading Happens-Before in Java Other langauges with Happens-Before Happens-Before in C++ SE-2811 Slide.
Concurrency (Threads) Threads allow you to do tasks in parallel. In an unthreaded program, you code is executed procedurally from start to finish. In a.
Week 6, Class 3: Composite Swing composites File composites Computer composites SE-2811 Slide design: Dr. Mark L. Hornick Content: Dr. Hornick Errors:
Week 8, Class 3: Model-View-Controller Final Project Worth 2 labs Cleanup of Ducks Reducing coupling Finishing FactoryMethod Cleanup of Singleton SE-2811.
Week 4, Day 1: Singleton(s?) Singleton leftover Why singletons? How to make lazy initialization work multi- threaded? Observers Why observers? Class structure.
CS2910 Week 6, Lab Today Dictionaries in Python SE-2811 Slide design: Dr. Mark L. Hornick Content: Dr. Hornick Errors: Dr. Yoder 1.
1 Introduction to Threads Race Conditions. 2 Process Address Space Revisited Code Data OS Stack (a)Process with Single Thread (b) Process with Two Threads.
SE3910 Week 8, Class 2 Week 4 Lab: Please return your graded Lab 4 to me so I can enter it in my gradebook Week 7, Class 2 (Wednesday) Half-Exam 2 Done.
SE3910 Week 8, Class 3 Week 4 Lab: Please return your graded Lab 4 to me so I can enter it in my gradebook Week 9 Lab: Individual demos of working sub-modules.
Asynchronous Programming Writing Asynchronous Code in Java SoftUni Team Technical Trainers Software University
Concurrency 2 CS 2110 – Spring 2016.
Slide design: Dr. Mark L. Hornick
Slide design: Dr. Mark L. Hornick
Slide design: Dr. Mark L. Hornick
Week 2, Day 1: The Factory Method Pattern
The Singleton Pattern SE-2811 Dr. Mark L. Hornick.
Threads Cannot Be Implemented As a Library
Lecture 25 More Synchronized Data and Producer/Consumer Relationship
Multithreaded Programming in Java
Threads and Memory Models Hal Perkins Autumn 2011
Week 6, Class 2: Observer Pattern
The C++ Memory model Implementing synchronization)
Week 7, Class 1: The Command Pattern (cont.)
Threads and Memory Models Hal Perkins Autumn 2009
Dr. Mustafa Cem Kasapbaşı
CSCI1600: Embedded and Real Time Software
SE-1011 Slide design: Dr. Mark L. Hornick Instructor: Dr. Yoder
Slide design: Dr. Mark L. Hornick
SE-1011 Slide design: Dr. Mark L. Hornick Instructor: Dr. Yoder
Slide design: Dr. Mark L. Hornick
Week 8, Class 3: Model-View-Controller
Slide design: Dr. Mark L. Hornick
Slide design: Dr. Mark L. Hornick
Week 8, Class 3: Model-View-Controller
Slide design: Dr. Mark L. Hornick
CSCI1600: Embedded and Real Time Software
Problems with Locks Andrew Whitaker CSE451.
Slide design: Dr. Mark L. Hornick
More concurrency issues
Presentation transcript:

Week 9, Class 3: Model-View-Controller Final Project Worth 2 labs Happens-Before ( SE-2811 Slide design: Dr. Mark L. Hornick Content: Dr. Hornick Errors: Dr. Yoder 1

Happens-Before “If one action happens-before another, then the first is visible to and ordered before the second.” /jls-17.html#jls SE-2811 Dr. Yoder 2

Important caveat: “An implementation is free to produce any code it likes, as long as all resulting executions of a program produce a result that can be predicted by the memory model.” /jls-17.html#jls-17.4 SE-2811 Dr.Yoder 3

“Happening Before Does Not Imply Happens-Before” void publishMessage() { answer = 42; isReady = 1; } void consumeMessage() { if (isReady) printf("%d\n", answer); } 2/the-happens-before- relation/ 2/the-happens-before- relation/ Exercise: How might this code execute to print 0 instead of 42 ? (You may use reordering and/or caching in your solution) SE-2811 Dr.Yoder 4

Some happens-before relationships “Each action in a thread happens- before every action in that thread that comes later in the program's order. “An unlock (synchronized block or method exit) of a monitor happens-before every subsequent lock (synchronized block or method entry) of that same monitor. “A write to a volatile field happens- before every subsequent read of that same field. SE-2811 Dr. Yoder 5

Some happens-before relationships “A call to start on a thread happens- before any action in the started thread. “All actions in a thread happen-before any other thread successfully returns from a join on that thread.” il/concurrent/package- summary.html#MemoryVisibility SE-2811 Dr.Yoder 6

Some definitions “Two accesses to (reads of or writes to) the same variable are said to be conflicting if at least one of the accesses is a write.” (§17.4.1)§ “When a program contains two conflicting accesses that are not ordered by a happens- before relationship, it is said to contain a data race.” (§17.4.5)§ SE-2811 Dr.Yoder 7

What is a “Memory Model”? “A memory model describes, given a program and an execution trace of that program, whether the execution trace is a legal execution of the program.” /jls-17.html#jls-17.4 SE-2811 Dr.Yoder 8

Total and Partial Order Partial OrderOne Total Order SE-2811 Dr.Yoder 9

Total and Partial Order Partial OrderOne Total Order SE-2811 Dr.Yoder 10

Total and Partial Order Partial OrderAnother Total Order SE-2811 Dr.Yoder 11

Total and Partial Order Each thread has a Total Order SE-2811 Dr.Yoder 12

My conclusion If a program has no data races, then we can treat that program as if it behaved according to our simple “switch-back-and-forth- between-threads” model which we used to illustrate multithreading at the beginning of the class. SE-2811 Dr.Yoder 13

Caveat “Sequential consistency and/or freedom from data races still allows errors arising from groups of operations that need to be perceived atomically and are not.” (§17.4.3)§ SE-2811 Dr.Yoder 14

A set of operations that happen all at once; they cannot be interrupted if(theInstance == null) { theInstance = new MySingleton(); } Atomic SE-2811 Dr.Yoder 15 Example: Should be atomic

The double-locked Singleton if(theInstance == null) { synchronized(MySingleton.class) { if(theInstance == null){ theInstance = new MySingleton(); } return theInstance; SE-2811 Slide design: Dr. Mark L. Hornick Content: Dr. Hornick Errors: Dr. Yoder 16

The faster double-locked Singleton MySingleton local = theInstance; if(local == null) { synchronized(MySingleton.class) { local = theInstance; if(theInstance == null) { local = theInstance = new MySingleton(); } return local; SE-2811 Slide design: Dr. Mark L. Hornick Content: Dr. Hornick Errors: Dr. Yoder 17

DO VARIABLES STORE OBJECTS? You may be wondering… SE-2811 Dr.Yoder 18

Volatile caveat “A write to a volatile field happens- before every subsequent read of that same field.” A field is an instance variable or a static variable A variable stores either a primitive type or a reference type A variable does not store an object. SE-2811 Dr. Yoder 19

What does this mean? Although writes to references are protected by volatile, writes to objects are not. If you want a volatile object, you have to declare all its fields volatile (not recommended) Even then… You can’t do this for objects in the standard library Your class may still have parts that need to be atomic but are not If you are calling a method that is not designed to be used without synchronization, you should synchronize around it. SE-2811 Dr.Yoder 20

Exercise if(loggers.get(path)==null){ synchronized (loggers){ if(loggers.get(path) == null){ EventLogger n = new EventLogger(path); } SE-2811 Dr.Yoder 21

Exercise Loggers is a map. If this map is not designed to be used from multiple threads, and we run this program, it isn’t safe. Explain what might go wrong. if(loggers.get(path)==null){ synchronized (loggers){ if(loggers.get(path) == null){ EventLogger n = new EventLogger(path); } SE-2811 Dr.Yoder 22

An alternative: java.util.concurrent Lock-free multi-threaded data structures: ConcurrentHashMap Like HashMap, only “concurrent” ConcurrentSkipListMap Like TreeMap, only “concurrent” Discussed in Dean & Dean SE1011 book recommended by a student for studying data structures SE-2811 Dr. Yoder 23

Java Tutorial References Thread interference (even without caching) currency/interfere.html Simple-language introduction to “happens-before” currency/memconsist.html Summary of happens-before relationships oncurrent/package- summary.html#MemoryVisibility SE-2811 Dr.Yoder 24