try_lock (Mutex)

    /*
     * Document-method: try_lock
     * call-seq: try_lock
     *
     * Attempts to obtain the lock and returns immediately. Returns +true+ if the
     * lock was granted.
     *
     */

    static VALUE
    rb_mutex_try_lock(VALUE self)
    {
        Mutex *mutex;

        Data_Get_Struct(self, Mutex, mutex);

        if (RTEST(mutex->owner))
            return Qfalse;

        mutex->owner = rb_thread_current();
        return Qtrue;
    }