File tree Expand file tree Collapse file tree 1 file changed +20
-11
lines changed Expand file tree Collapse file tree 1 file changed +20
-11
lines changed Original file line number Diff line number Diff line change @@ -22,6 +22,7 @@ class MemoryStore
22
22
def initialize ( max_size = DEFAULT_MAX_SIZE )
23
23
@max_size = max_size
24
24
@cache = { }
25
+ @mutex = Mutex . new
25
26
end
26
27
27
28
# Public: Retrieve value from cache.
@@ -32,12 +33,14 @@ def initialize(max_size = DEFAULT_MAX_SIZE)
32
33
#
33
34
# Returns Object or nil or the value is not set.
34
35
def get ( key )
35
- exists = true
36
- value = @cache . delete ( key ) { exists = false }
37
- if exists
38
- @cache [ key ] = value
39
- else
40
- nil
36
+ @mutex . synchronize do
37
+ exists = true
38
+ value = @cache . delete ( key ) { exists = false }
39
+ if exists
40
+ @cache [ key ] = value
41
+ else
42
+ nil
43
+ end
41
44
end
42
45
end
43
46
@@ -50,24 +53,30 @@ def get(key)
50
53
#
51
54
# Returns Object value.
52
55
def set ( key , value )
53
- @cache . delete ( key )
54
- @cache [ key ] = value
55
- @cache . shift if @cache . size > @max_size
56
+ @mutex . synchronize do
57
+ @cache . delete ( key )
58
+ @cache [ key ] = value
59
+ @cache . shift if @cache . size > @max_size
60
+ end
56
61
value
57
62
end
58
63
59
64
# Public: Pretty inspect
60
65
#
61
66
# Returns String.
62
67
def inspect
63
- "#<#{ self . class } size=#{ @cache . size } /#{ @max_size } >"
68
+ @mutex . synchronize do
69
+ "#<#{ self . class } size=#{ @cache . size } /#{ @max_size } >"
70
+ end
64
71
end
65
72
66
73
# Public: Clear the cache
67
74
#
68
75
# Returns true
69
76
def clear ( options = nil )
70
- @cache . clear
77
+ @mutex . synchronize do
78
+ @cache . clear
79
+ end
71
80
true
72
81
end
73
82
end
You can’t perform that action at this time.
0 commit comments