class Concurrent::MVar

def put(value, timeout = nil)

Returns:
  • (Object) - the value that was put, or `TIMEOUT`
def put(value, timeout = nil)
  @mutex.synchronize do
    wait_for_empty(timeout)
    # If we timed out we won't be empty
    if unlocked_empty?
      @value = value
      @full_condition.signal
      apply_deref_options(value)
    else
      TIMEOUT
    end
  end
end