This repository was archived by the owner on Mar 15, 2022. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +21
-16
lines changed Expand file tree Collapse file tree 2 files changed +21
-16
lines changed Original file line number Diff line number Diff line change @@ -28,8 +28,10 @@ def initialize
28
28
# Get a value from the map by key. If the value has been reclaimed by the garbage
29
29
# collector, this will return nil.
30
30
def []( key )
31
- rkey = ref_key ( key )
32
- @values [ rkey ] if rkey
31
+ @lock . synchronize do
32
+ rkey = ref_key ( key )
33
+ @values [ rkey ] if rkey
34
+ end
33
35
end
34
36
35
37
alias_method :get , :[]
@@ -47,12 +49,14 @@ def []=(key, value)
47
49
48
50
# Remove the value associated with the key from the map.
49
51
def delete ( key )
50
- rkey = ref_key ( key )
51
- if rkey
52
- @references_to_keys_map . delete ( rkey )
53
- @values . delete ( rkey )
54
- else
55
- nil
52
+ @lock . synchronize do
53
+ rkey = ref_key ( key )
54
+ if rkey
55
+ @references_to_keys_map . delete ( rkey )
56
+ @values . delete ( rkey )
57
+ else
58
+ nil
59
+ end
56
60
end
57
61
end
58
62
@@ -87,8 +91,8 @@ def clear
87
91
88
92
# Merge the values from another hash into this map.
89
93
def merge! ( other_hash )
90
- other_hash . each do | key , value |
91
- self [ key ] = value
94
+ @lock . synchronize do
95
+ other_hash . each { | key , value | self [ key ] = value }
92
96
end
93
97
end
94
98
@@ -106,7 +110,6 @@ def empty?
106
110
@references_to_keys_map . each do |_ , ref |
107
111
return false if ref . object
108
112
end
109
-
110
113
true
111
114
end
112
115
Original file line number Diff line number Diff line change @@ -28,9 +28,11 @@ def initialize
28
28
# Get a value from the map by key. If the value has been reclaimed by the garbage
29
29
# collector, this will return nil.
30
30
def []( key )
31
- ref = @references [ key ]
32
- value = ref . object if ref
33
- value
31
+ @lock . synchronize do
32
+ ref = @references [ key ]
33
+ value = ref . object if ref
34
+ value
35
+ end
34
36
end
35
37
36
38
alias_method :get , :[]
@@ -101,8 +103,8 @@ def clear
101
103
102
104
# Merge the values from another hash into this map.
103
105
def merge! ( other_hash )
104
- other_hash . each do | key , value |
105
- self [ key ] = value
106
+ @lock . synchronize do
107
+ other_hash . each { | key , value | self [ key ] = value }
106
108
end
107
109
end
108
110
You can’t perform that action at this time.
0 commit comments