Skip to content

Commit 8b33814

Browse files
committed
Added untested Event#try? method.
1 parent fd397db commit 8b33814

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

lib/concurrent/atomic/event.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,14 @@ def set
4747
true
4848
end
4949

50+
def try?
51+
@mutex.synchronize do
52+
return false if @set
53+
@set = true
54+
@condition.broadcast
55+
end
56+
end
57+
5058
# Reset a previously set event back to the `unset` state.
5159
# Has no effect if the `Event` has not yet been set.
5260
#

spec/concurrent/atomic/event_spec.rb

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,13 @@ module Concurrent
2121
end
2222

2323
it 'returns false if the event is unset' do
24-
#subject.reset
2524
subject.should_not be_set
2625
end
2726
end
2827

2928
context '#set' do
3029

3130
it 'triggers the event' do
32-
#subject.reset
3331
@expected = false
3432
Thread.new{ subject.wait; @expected = true }
3533
sleep(0.1)
@@ -44,13 +42,22 @@ module Concurrent
4442
end
4543
end
4644

45+
context '#try?' do
46+
47+
it 'triggers the event if not already set'
48+
49+
it 'returns true if not previously set'
50+
51+
it 'returns false if previously set'
52+
end
53+
4754
context '#reset' do
4855

4956
it 'does not change the state of an unset event' do
5057
subject.reset
5158
subject.should_not be_set
5259
end
53-
60+
5461
it 'does not trigger an unset event' do
5562
@expected = false
5663
Thread.new{ subject.wait; @expected = true }

0 commit comments

Comments
 (0)