Skip to content

Commit 3982dfd

Browse files
committed
changed AtomicBoolean#make_true and #make_false to return a boolean indicating whether the value has been updated or not
1 parent 4b3da9a commit 3982dfd

File tree

2 files changed

+18
-14
lines changed

2 files changed

+18
-14
lines changed

lib/concurrent/atomic/atomic_boolean.rb

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -75,24 +75,28 @@ def false?
7575
#
7676
# Explicitly sets the value to true.
7777
#
78-
# @return [nil]
78+
# @return [Boolean] true is value has changed, otherwise false
7979
def make_true
8080
@mutex.lock
81+
old = @value
8182
@value = true
8283
@mutex.unlock
83-
nil
84+
85+
!old
8486
end
8587

8688
# @!macro [attach] atomic_boolean_method_make_false
8789
#
8890
# Explicitly sets the value to false.
8991
#
90-
# @return [nil]
92+
# @return [Boolean] true is value has changed, otherwise false
9193
def make_false
9294
@mutex.lock
95+
old = @value
9396
@value = false
9497
@mutex.unlock
95-
nil
98+
99+
old
96100
end
97101
end
98102

@@ -131,12 +135,12 @@ def false?
131135

132136
# @!macro atomic_boolean_method_make_true
133137
def make_true
134-
@atomic.set(true)
138+
@atomic.compareAndSet(false, true)
135139
end
136140

137141
# @!macro atomic_boolean_method_make_false
138142
def make_false
139-
@atomic.set(false)
143+
@atomic.compareAndSet(true, false)
140144
end
141145
end
142146

spec/concurrent/atomic/atomic_boolean_spec.rb

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -75,30 +75,30 @@
7575

7676
describe '#make_true' do
7777

78-
it 'makes a false value true and returns nil' do
78+
it 'makes a false value true and returns true' do
7979
subject = described_class.new(false)
80-
subject.make_true.should be_nil
80+
subject.make_true.should be_true
8181
subject.value.should be_true
8282
end
8383

84-
it 'keeps a true value true and returns nil' do
84+
it 'keeps a true value true and returns false' do
8585
subject = described_class.new(true)
86-
subject.make_true.should be_nil
86+
subject.make_true.should be_false
8787
subject.value.should be_true
8888
end
8989
end
9090

9191
describe '#make_false' do
9292

93-
it 'makes a true value false and returns nil' do
93+
it 'makes a true value false and returns true' do
9494
subject = described_class.new(true)
95-
subject.make_false.should be_nil
95+
subject.make_false.should be_true
9696
subject.value.should be_false
9797
end
9898

99-
it 'keeps a false value false and returns nil' do
99+
it 'keeps a false value false and returns false' do
100100
subject = described_class.new(false)
101-
subject.make_false.should be_nil
101+
subject.make_false.should be_false
102102
subject.value.should be_false
103103
end
104104
end

0 commit comments

Comments
 (0)