Class: GorgonBunny::Concurrent::AtomicFixnum

Inherits:
Object
  • Object
show all
Defined in:
lib/gorgon_bunny/lib/gorgon_bunny/concurrent/atomic_fixnum.rb

Overview

Note:

Designed to be intentionally minimalistic and only cover GorgonBunny’s needs.

Minimalistic implementation of a synchronized fixnum value, designed after (but not implementing the entire API of!)

Instance Method Summary collapse

Constructor Details

#initialize(n = 0) ⇒ AtomicFixnum

Returns a new instance of AtomicFixnum.



14
15
16
17
# File 'lib/gorgon_bunny/lib/gorgon_bunny/concurrent/atomic_fixnum.rb', line 14

def initialize(n = 0)
  @n     = n
  @mutex = Monitor.new
end

Instance Method Details

#==(m) ⇒ Object



65
66
67
# File 'lib/gorgon_bunny/lib/gorgon_bunny/concurrent/atomic_fixnum.rb', line 65

def ==(m)
  @mutex.synchronize { @n == m }
end

#===(v) ⇒ Object



69
70
71
# File 'lib/gorgon_bunny/lib/gorgon_bunny/concurrent/atomic_fixnum.rb', line 69

def ===(v)
  @mutex.synchronize { @n === v }
end

#decrementObject Also known as: dec, decrement_and_get



57
58
59
60
61
# File 'lib/gorgon_bunny/lib/gorgon_bunny/concurrent/atomic_fixnum.rb', line 57

def decrement
  @mutex.synchronize do
    @n = @n - 1
  end
end

#getObject



19
20
21
22
23
# File 'lib/gorgon_bunny/lib/gorgon_bunny/concurrent/atomic_fixnum.rb', line 19

def get
  @mutex.synchronize do
    @n
  end
end

#get_and_add(i) ⇒ Object



39
40
41
42
43
44
45
46
# File 'lib/gorgon_bunny/lib/gorgon_bunny/concurrent/atomic_fixnum.rb', line 39

def get_and_add(i)
  @mutex.synchronize do
    v = @n
    @n = @n + i

    v
  end
end

#get_and_incrementObject



48
49
50
51
52
53
54
55
# File 'lib/gorgon_bunny/lib/gorgon_bunny/concurrent/atomic_fixnum.rb', line 48

def get_and_increment
  @mutex.synchronize do
    v = @n
    @n = @n + 1

    v
  end
end

#incrementObject Also known as: inc, increment_and_get



31
32
33
34
35
# File 'lib/gorgon_bunny/lib/gorgon_bunny/concurrent/atomic_fixnum.rb', line 31

def increment
  @mutex.synchronize do
    @n = @n + 1
  end
end

#set(n) ⇒ Object



25
26
27
28
29
# File 'lib/gorgon_bunny/lib/gorgon_bunny/concurrent/atomic_fixnum.rb', line 25

def set(n)
  @mutex.synchronize do
    @n = n
  end
end