80 likes | 166 Views
Explore the dynamic concurrency issues faced by Person A purchasing milk - from running errands to computerized purchase - in this comprehensive CS 140 lecture notes.
E N D
Too Much Milk Person A 3:00 Arrive home: no milk 3:05 Leave for store 3:10 Arrive at store 3:15 Leave store 3:20 Arrive home, put milk away CS 140 Lecture Notes: Concurrency
Too Much Milk Person A Person B 3:00 Arrive home: no milk 3:05 Leave for store 3:10 Arrive at store Arrive home: no milk 3:15 Leave store Leave for store 3:20 Arrive home, put milk away Arrive at store 3:25 Leave store 3:30 Arrive home: too much milk! CS 140 Lecture Notes: Concurrency
Computerized Milk Purchase if (!GotMilk) { if (NoNote) { Leave Note; Buy Milk; Remove Note; } } CS 140 Lecture Notes: Concurrency
Still Too Much Milk Thread A: Thread B: if (!GotMilk) { if (NoNote) { if (!GotMilk) { if (NoNote) { Leave Note; Buy Milk; Remove Note; } } Leave Note; Buy Milk; Remove Note; } } CS 140 Lecture Notes: Concurrency
Thread A: if (NoNote) { if (!GotMilk) { Buy Milk; } Leave Note; } Thread B: if (Note) { if (!GotMilk) { Buy Milk; } Remove Note; } Second Attempt CS 140 Lecture Notes: Concurrency
Thread A: 1 Leave NoteA; 2 if (No NoteB) { 3 if (!GotMilk) { 4 Buy Milk; 5 } 6 } 7 Remove NoteA; Thread B: 1 Leave NoteB; 2 if (No NoteA) { 3 if (!GotMilk) { 4 Buy Milk; 5 } 6 } 7 Remove NoteB; Third Attempt CS 140 Lecture Notes: Concurrency
Thread A: 1 Leave NoteA; 2 if (No NoteB) { 3 if (!GotMilk) { 4 Buy Milk; 5 } 6 } 7 Remove NoteA; Thread B: 1 Leave NoteB; 2 while (NoteA) { 3 do nothing 4 } 5 if (!GotMilk) { 6 Buy Milk; 7 } 8 Remove NoteB; Fourth Attempt CS 140 Lecture Notes: Concurrency