Files
jekyll/lib/jekyll/utils/thread_event.rb
Frank Taillandier 6c771608e5 Update Rubocop's config (#7050)
Merge pull request 7050
2018-06-02 06:50:32 -04:00

32 lines
615 B
Ruby

# frozen_string_literal: true
module Jekyll
module Utils
# Based on the pattern and code from
# https://emptysqua.re/blog/an-event-synchronization-primitive-for-ruby/
class ThreadEvent
attr_reader :flag
def initialize
@lock = Mutex.new
@cond = ConditionVariable.new
@flag = false
end
def set
@lock.synchronize do
yield if block_given?
@flag = true
@cond.broadcast
end
end
def wait
@lock.synchronize do
@cond.wait(@lock) unless @flag
end
end
end
end
end