class RSpec::Core::Mutex

@private
Some formating changes are made to appease the robot overlord:
Anything I don’t understand (there’s quite a bit, actually) is left in.
Some methods we don’t need are deleted.
So we’re transcribing/modifying it from github.com/ruby/ruby/blob/v1_8_7_374/lib/thread.rb#L56<br><br>causing tests to pass where they should fail.
We don’t want to load the stdlib, b/c this is a test tool, and can affect the test environment,
On 1.8.7, it’s in the stdlib.

def initialize

def initialize
  @waiting = []
  @locked = false
  @waiting.taint
  taint
end

def lock

Other tags:
    Private: -
def lock
  while Thread.critical = true && @locked
    @waiting.push Thread.current
    Thread.stop
  end
  @locked = true
  Thread.critical = false
  self
end

def synchronize

Other tags:
    Private: -
def synchronize
  lock
  begin
    yield
  ensure
    unlock
  end
end

def unlock

Other tags:
    Private: -
def unlock
  return unless @locked
  Thread.critical = true
  @locked = false
  begin
    t = @waiting.shift
    t.wakeup if t
  rescue ThreadError
    retry
  end
  Thread.critical = false
  begin
    t.run if t
  rescue ThreadError
    :noop
  end
  self
end