    # 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