Skip to content

Commit 509c60e

Browse files
committed
JRuby fix #6 - makes .acquire return nil
1 parent 0f59e8f commit 509c60e

File tree

2 files changed

+11
-10
lines changed

2 files changed

+11
-10
lines changed

lib/concurrent/atomic/semaphore.rb

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,14 @@ def initialize(count)
2828
# @raise [ArgumentError] if `permits` is not an integer or is less than
2929
# one
3030
#
31-
# @return [True]
31+
# @return [Nil]
3232
def acquire(permits = 1)
3333
unless permits.is_a?(Fixnum) && permits > 0
3434
fail ArgumentError, 'permits must be an integer greater than zero'
3535
end
3636
@mutex.synchronize do
3737
try_acquire_timed(permits, nil)
38+
nil
3839
end
3940
end
4041

@@ -95,7 +96,7 @@ def try_acquire(permits = 1, timeout = nil)
9596
#
9697
# @raise [ArgumentError] if `permits` is not a number or is less than one
9798
#
98-
# @return [True]
99+
# @return [Nil]
99100
def release(permits = 1)
100101
unless permits.is_a?(Fixnum) && permits > 0
101102
fail ArgumentError, 'permits must be an integer greater than zero'
@@ -104,7 +105,7 @@ def release(permits = 1)
104105
@free += permits
105106
permits.times { @condition.signal }
106107
end
107-
true
108+
nil
108109
end
109110

110111
# @!macro [attach] semaphore_method_reduce_permits
@@ -117,7 +118,7 @@ def release(permits = 1)
117118
#
118119
# @raise [ArgumentError] if `@free` - `@reduction` is less than zero
119120
#
120-
# @return [True]
121+
# @return [Nil]
121122
def reduce_permits(reduction)
122123
unless reduction.is_a?(Fixnum) && reduction >= 0
123124
fail ArgumentError, 'reduction must be an non-negative integer'
@@ -127,7 +128,7 @@ def reduce_permits(reduction)
127128
'cannot reduce number of available_permits below zero')
128129
end
129130
@mutex.synchronize { @free -= reduction }
130-
true
131+
nil
131132
end
132133

133134
private

spec/concurrent/atomic/semaphore_spec.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
context 'permits available' do
1616
it 'should return true immediately' do
1717
result = semaphore.acquire
18-
expect(result).to be_truthy
18+
expect(result).to be_nil
1919
end
2020
end
2121

@@ -25,7 +25,7 @@
2525
Thread.new { sleep(0.2) && semaphore.release }
2626

2727
result = semaphore.acquire
28-
expect(result).to be_truthy
28+
expect(result).to be_nil
2929
expect(semaphore.available_permits).to eq 0
3030
end
3131
end
@@ -64,10 +64,10 @@
6464
expect(result).to be_truthy
6565
end
6666

67-
it 'acquires after if permits are available within timeout' do
67+
it 'acquires when permits are available within timeout' do
6868
semaphore.drain_permits
6969
Thread.new { sleep 0.1 && semaphore.release }
70-
result = semaphore.try_acquire(1, 0.2)
70+
result = semaphore.try_acquire(1, 1)
7171
expect(result).to be_truthy
7272
end
7373

@@ -155,7 +155,7 @@ def subject.simulate_spurious_wake_up
155155

156156
describe Semaphore do
157157
if jruby?
158-
it 'inherits from JavaCountDownLatch' do
158+
it 'inherits from JavaSemaphore' do
159159
expect(Semaphore.ancestors).to include(JavaSemaphore)
160160
end
161161
else

0 commit comments

Comments
 (0)