coarse-grained and fine-grained locking...art of multiprocessor programming 9 coarse-grained locking...
TRANSCRIPT
![Page 1: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/1.jpg)
Coarse-grained and fine-grained locking
Niklas Fors 2013-12-05
Art of Multiprocessor Programming 1
Slides borrowed from: http://cs.brown.edu/courses/cs176course_information.shtml
![Page 2: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/2.jpg)
Topics discussed
• Coarse-grained locking – One lock
• Fine-grained locking – More than one lock
Art of Multiprocessor Programming 2
![Page 3: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/3.jpg)
Art of Multiprocessor Programming 3
Abstract Data Types
• Concrete representation:
• Abstract Type: – {a, b}
a b
![Page 4: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/4.jpg)
Art of Multiprocessor Programming 4
Abstract Data Types
• Meaning of rep given by abstraction map
– S( ) = {a,b} a b
![Page 5: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/5.jpg)
Art of Multiprocessor Programming 5
Coarse-Grained Locking
a b d
![Page 6: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/6.jpg)
Art of Multiprocessor Programming 6
Coarse-Grained Locking
a b d
c
![Page 7: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/7.jpg)
Art of Multiprocessor Programming 7
honk!
Coarse-Grained Locking
a b d
c
Simple but hotspot + bottleneck
honk!
![Page 8: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/8.jpg)
Art of Multiprocessor Programming 8
Coarse-Grained Locking
• Easy, same as synchronized methods – “One lock to rule them all …”
![Page 9: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/9.jpg)
Art of Multiprocessor Programming 9
Coarse-Grained Locking
• Easy, same as synchronized methods – “One lock to rule them all …”
• Simple, clearly correct – Deserves respect!
• Works poorly with contention
![Page 10: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/10.jpg)
Art of Multiprocessor Programming 10
Fine-grained Locking
• Requires careful thought • Split object into pieces
– Each piece has own lock – Methods that work on disjoint pieces need
not exclude each other
![Page 11: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/11.jpg)
Art of Multiprocessor Programming 11
Hand-over-Hand locking
a b c
![Page 12: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/12.jpg)
Art of Multiprocessor Programming 12
Hand-over-Hand locking
a b c
![Page 13: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/13.jpg)
Art of Multiprocessor Programming 13
Hand-over-Hand locking
a b c
![Page 14: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/14.jpg)
Art of Multiprocessor Programming 14
Hand-over-Hand locking
a b c
![Page 15: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/15.jpg)
Art of Multiprocessor Programming 15
Hand-over-Hand locking
a b c
![Page 16: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/16.jpg)
Art of Multiprocessor Programming 16
Removing a Node
a b c d
remove(b)
![Page 17: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/17.jpg)
Art of Multiprocessor Programming 17
Removing a Node
a b c d
remove(b)
![Page 18: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/18.jpg)
Art of Multiprocessor Programming 18
Removing a Node
a b c d
remove(b)
![Page 19: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/19.jpg)
Art of Multiprocessor Programming 19
Removing a Node
a b c d
remove(b)
![Page 20: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/20.jpg)
Art of Multiprocessor Programming 20
Removing a Node
a b c d
remove(b)
![Page 21: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/21.jpg)
Art of Multiprocessor Programming 21
Removing a Node
a c d
remove(b) Why lock victim node?
![Page 22: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/22.jpg)
Art of Multiprocessor Programming 22
Concurrent Removes
a b c d
remove(c) remove(b)
![Page 23: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/23.jpg)
Art of Multiprocessor Programming 23
Concurrent Removes
a b c d
remove(b) remove(c)
![Page 24: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/24.jpg)
Art of Multiprocessor Programming 24
Concurrent Removes
a b c d
remove(b) remove(c)
![Page 25: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/25.jpg)
Art of Multiprocessor Programming 25
Concurrent Removes
a b c d
remove(b) remove(c)
![Page 26: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/26.jpg)
Art of Multiprocessor Programming 26
Concurrent Removes
a b c d
remove(b) remove(c)
![Page 27: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/27.jpg)
Art of Multiprocessor Programming 27
Concurrent Removes
a b c d
remove(b) remove(c)
![Page 28: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/28.jpg)
Art of Multiprocessor Programming 28
Concurrent Removes
a b c d
remove(b) remove(c)
![Page 29: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/29.jpg)
Art of Multiprocessor Programming 29
Concurrent Removes
a b c d
remove(b) remove(c)
![Page 30: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/30.jpg)
Art of Multiprocessor Programming 30
Concurrent Removes
a b c d
remove(b) remove(c)
![Page 31: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/31.jpg)
Art of Multiprocessor Programming 31
Uh, Oh
a c d
remove(b) remove(c)
![Page 32: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/32.jpg)
Art of Multiprocessor Programming 32
Uh, Oh
a c d
Bad news, c not removed
remove(b) remove(c)
![Page 33: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/33.jpg)
Art of Multiprocessor Programming 33
Hand-Over-Hand Again
a b c d
remove(b)
![Page 34: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/34.jpg)
Art of Multiprocessor Programming 34
Hand-Over-Hand Again
a b c d
remove(b)
![Page 35: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/35.jpg)
Art of Multiprocessor Programming 35
Hand-Over-Hand Again
a b c d
remove(b)
![Page 36: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/36.jpg)
Art of Multiprocessor Programming 36
Hand-Over-Hand Again
a b c d
remove(b) Found
it!
![Page 37: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/37.jpg)
Art of Multiprocessor Programming 37
Hand-Over-Hand Again
a b c d
remove(b) Found
it!
![Page 38: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/38.jpg)
Art of Multiprocessor Programming 38
Hand-Over-Hand Again
a c d
remove(b)
![Page 39: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/39.jpg)
Art of Multiprocessor Programming 39
Removing a Node
a b c d
remove(b) remove(c)
![Page 40: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/40.jpg)
Art of Multiprocessor Programming 40
Removing a Node
a b c d
remove(b) remove(c)
![Page 41: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/41.jpg)
Art of Multiprocessor Programming 41
Removing a Node
a b c d
remove(b) remove(c)
![Page 42: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/42.jpg)
Art of Multiprocessor Programming 42
Removing a Node
a b c d
remove(b) remove(c)
![Page 43: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/43.jpg)
Art of Multiprocessor Programming 43
Removing a Node
a b c d
remove(b) remove(c)
![Page 44: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/44.jpg)
Art of Multiprocessor Programming 44
Removing a Node
a b c d
remove(b) remove(c)
![Page 45: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/45.jpg)
Art of Multiprocessor Programming 45
Removing a Node
a b c d
remove(b) remove(c)
![Page 46: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/46.jpg)
Art of Multiprocessor Programming 46
Removing a Node
a b c d
remove(b) remove(c)
![Page 47: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/47.jpg)
Art of Multiprocessor Programming 47
Removing a Node
a b c d
Must acquire Lock for
b
remove(c)
![Page 48: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/48.jpg)
Art of Multiprocessor Programming 48
Removing a Node
a b c d
Waiting to acquire
lock for b
remove(c)
![Page 49: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/49.jpg)
Art of Multiprocessor Programming 49
Removing a Node
a b c d
Wait! remove(c)
![Page 50: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/50.jpg)
Art of Multiprocessor Programming 50
Removing a Node
a b d
Proceed to
remove(b)
![Page 51: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/51.jpg)
Art of Multiprocessor Programming 51
Removing a Node
a b d
remove(b)
![Page 52: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/52.jpg)
Art of Multiprocessor Programming 52
Removing a Node
a b d
remove(b)
![Page 53: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/53.jpg)
Art of Multiprocessor Programming 53
Removing a Node
a d
remove(b)
![Page 54: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/54.jpg)
Art of Multiprocessor Programming 54
Removing a Node
a d
![Page 55: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/55.jpg)
Art of Multiprocessor Programming 55
Remove method
public boolean remove(T item) { int key = item.hashCode(); Node pred, curr; try { … } finally { curr.unlock(); pred.unlock(); }}
![Page 56: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/56.jpg)
Art of Multiprocessor Programming 56
Remove method
public boolean remove(T item) { int key = item.hashCode(); Node pred, curr; try { … } finally { curr.unlock(); pred.unlock(); }}
Key used to order node
![Page 57: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/57.jpg)
Art of Multiprocessor Programming 57
Remove method
public boolean remove(T item) { int key = item.hashCode(); Node pred, curr; try { … } finally { currNode.unlock(); predNode.unlock(); }}
Predecessor and current nodes
![Page 58: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/58.jpg)
Art of Multiprocessor Programming 58
Remove method
public boolean remove(T item) { int key = item.hashCode(); Node pred, curr; try { … } finally { curr.unlock(); pred.unlock(); }}
Make sure locks released
![Page 59: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/59.jpg)
Art of Multiprocessor Programming 59
Remove method
public boolean remove(T item) { int key = item.hashCode(); Node pred, curr; try { … } finally { curr.unlock(); pred.unlock(); }}
Everything else
![Page 60: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/60.jpg)
Art of Multiprocessor Programming 60
Remove method
try { pred = head; pred.lock(); curr = pred.next; curr.lock(); … } finally { … }
![Page 61: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/61.jpg)
Art of Multiprocessor Programming 61
Remove method
try { pred = head; pred.lock(); curr = pred.next; curr.lock(); … } finally { … }
lock pred == head
![Page 62: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/62.jpg)
try { pred = head; pred.lock(); curr = pred.next; curr.lock(); … } finally { … }
Art of Multiprocessor Programming 62
Remove method
Lock current
![Page 63: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/63.jpg)
try { pred = head; pred.lock(); curr = pred.next; curr.lock(); … } finally { … }
Art of Multiprocessor Programming 63
Remove method
Traversing list
![Page 64: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/64.jpg)
while (curr.key <= key) { if (item == curr.item) { pred.next = curr.next; return true; } pred.unlock(); pred = curr; curr = curr.next; curr.lock(); } return false;
Art of Multiprocessor Programming 64
Remove: searching
![Page 65: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/65.jpg)
while (curr.key <= key) { if (item == curr.item) { pred.next = curr.next; return true; } pred.unlock(); pred = curr; curr = curr.next; curr.lock(); } return false;
Art of Multiprocessor Programming 65
Remove: searching
Search key range
![Page 66: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/66.jpg)
while (curr.key <= key) { if (item == curr.item) { pred.next = curr.next; return true; } pred.unlock(); pred = curr; curr = curr.next; curr.lock(); } return false;
At start of each loop: curr and pred locked
Art of Multiprocessor Programming 66
Remove: searching
![Page 67: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/67.jpg)
while (curr.key <= key) { if (item == curr.item) { pred.next = curr.next; return true; } pred.unlock(); pred = curr; curr = curr.next; curr.lock(); } return false;
Art of Multiprocessor Programming 67
Remove: searching
If item found, remove node
![Page 68: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/68.jpg)
while (curr.key <= key) { if (item == curr.item) { pred.next = curr.next; return true; } pred.unlock(); pred = curr; curr = curr.next; curr.lock(); } return false;
Art of Multiprocessor Programming 68
Remove: searching Unlock predecessor
![Page 69: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/69.jpg)
while (curr.key <= key) { if (item == curr.item) { pred.next = curr.next; return true; } pred.unlock(); pred = curr; curr = curr.next; curr.lock(); } return false;
Art of Multiprocessor Programming 69
Remove: searching
demote current
![Page 70: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/70.jpg)
while (curr.key <= key) { if (item == curr.item) { pred.next = curr.next; return true; } pred.unlock(); pred = currNode; curr = curr.next; curr.lock(); } return false;
Art of Multiprocessor Programming 70
Remove: searching
Find and lock new current
![Page 71: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/71.jpg)
while (curr.key <= key) { if (item == curr.item) { pred.next = curr.next; return true; } pred.unlock(); pred = currNode; curr = curr.next; curr.lock(); } return false;
Art of Multiprocessor Programming 71
Remove: searching
Lock invariant restored
![Page 72: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/72.jpg)
Art of Multiprocessor Programming 72
Remove: searching
while (curr.key <= key) { if (item == curr.item) { pred.next = curr.next; return true; } pred.unlock(); pred = curr; curr = curr.next; curr.lock(); } return false;
Otherwise, not present
![Page 73: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/73.jpg)
Art of Multiprocessor Programming 73
Why does this work?
• To remove node e – Must lock e – Must lock e’s predecessor
• Therefore, if you lock a node – It can’t be removed – And neither can its successor
![Page 74: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/74.jpg)
Art of Multiprocessor Programming 74
Adding Nodes
• To add node e – Must lock predecessor – Must lock successor
• Neither can be deleted
![Page 75: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/75.jpg)
Art of Multiprocessor Programming 75
Same Abstraction Map
• S(head) = { x | there exists a such that
• a reachable from head and • a.item = x
}
![Page 76: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/76.jpg)
Art of Multiprocessor Programming 76
Rep Invariant
• Easy to check that – tail always reachable from head – Nodes sorted, no duplicates
![Page 77: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/77.jpg)
Art of Multiprocessor Programming 77
Drawbacks
• Better than coarse-grained lock – Threads can traverse in parallel
• Still not ideal – Long chain of acquire/release – Inefficient
![Page 78: Coarse-grained and fine-grained locking...Art of Multiprocessor Programming 9 Coarse-Grained Locking • Easy, same as synchronized methods – “One lock to rule them all …”](https://reader035.vdocuments.us/reader035/viewer/2022062609/61038eb1a8e1680d8f66ffa8/html5/thumbnails/78.jpg)
Art of Multiprocessor Programming 79
This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.
• You are free: – to Share — to copy, distribute and transmit the work – to Remix — to adapt the work
• Under the following conditions: – Attribution. You must attribute the work to “The Art of
Multiprocessor Programming” (but not in any way that suggests that the authors endorse you or your use of the work).
– Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under the same, similar or a compatible license.
• For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do this is with a link to – http://creativecommons.org/licenses/by-sa/3.0/.
• Any of the above conditions can be waived if you get permission from the copyright holder.
• Nothing in this license impairs or restricts the author's moral rights.