Synchronization CPEN 331, UBC Alexandra Fedorova

Synchronization CPEN 331, UBC Alexandra Fedorova
1 / 1
Synchronization CPEN 331, UBC Alexandra Fedorova - slide 1 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 2 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 3 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 4 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 5 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 6 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 7 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 8 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 9 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 10 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 11 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 12 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 13 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 14 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 15 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 16 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 17 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 18 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 19 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 20 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 21 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 22 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 23 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 24 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 25 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 26 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 27 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 28 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 29 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 30 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 31 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 32 of 33 Synchronization CPEN 331, UBC Alexandra Fedorova - slide 33 of 33
Synchronization CPEN 331, UBC Alexandra Fedorova Shared Resources Basic problem: Two concurrent threads are accessing a shared variable If the variable is readmodifiedwritten by both threads, then access to the variable must be controlled

Related Topics

Download this presentation From Below

"Synchronization CPEN 331, UBC Alexandra Fedorova" is the property of its rightful owner. Permission is granted to download and print the materials on this website for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.

Presentation Transcript

01
Synchronization CPEN 331, UBC
Alexandra Fedorova<br>
02
Shared Resources Basic problem:
Two concurrent threads are accessing a shared variable
If the variable is read/modified/written by both threads, then access to the variable must be controlled
Otherwise, unexpected results may occur
Over the next two lectures, we’ll look at:
Mechanisms to control access to shared resources
Low-level mechanisms: locks
Higher level mechanisms: mutexes, semaphores, and condition variables
Patterns for coordinating access to shared resources<br>
03
Shared Variable Example Suppose we implement a function to withdraw money from a bank account: int withdraw(account, amount)
{
balance = get_balance(account);
balance = balance - amount;
put_balance(account, balance);
return balance;
} Now suppose that you and your roommate share a bank account with a balance of $1500.00 (not that this is necessarily a good idea...)
What happens if you both go to separate ATM machines, and simultaneously withdraw $100.00 from the account?<br>