# File lib/needle/thread.rb, line 67
    def unlock
      return unless @locked
      Thread.critical = true
      @locked = false
      begin
        t = @waiting.shift
        t.wakeup if t
      rescue ThreadError
        retry
      end
      @locking_thread = nil
      Thread.critical = false
      begin
        t.run if t
      rescue ThreadError
      end
      self
    end