class Concurrent::Event

Old school kernel-style event reminiscent of Win32 programming in C++.

When an ‘Event` is created it is in the `unset` state. Threads can choose to `#wait` on the event, blocking until released by another thread. When one thread wants to alert all blocking threads it calls the `#set` method which will then wake up all listeners. Once an `Event` has been set it remains set. New threads calling `#wait` will return immediately. An `Event` may be `#reset` at any time once it has been set.

@see msdn.microsoft.com/en-us/library/windows/desktop/ms682655.aspx @example

event = Concurrent::Event.new

t1 = Thread.new do
  puts "t1 is waiting"
  event.wait(1)
  puts "event ocurred"
end

t2 = Thread.new do
  puts "t2 calling set"
  event.set
end

[t1, t2].each(&:join)

# prints:
# t2 calling set
# t1 is waiting
# event occurred