exit()
  public
  
    
    
Terminates thr and schedules another thread to be run.
If this thread is already marked to be killed, #exit returns the Thread.
If this is the main thread, or the
last thread, exits the process.
   
  
    Show source    
    
      VALUE
rb_thread_kill(VALUE thread)
{
    rb_thread_t *th;
    GetThreadPtr(thread, th);
    if (th->to_kill || th->status == THREAD_KILLED) {
        return thread;
    }
    if (th == th->vm->main_thread) {
        rb_exit(EXIT_SUCCESS);
    }
    thread_debug("rb_thread_kill: %p (%p)\n", (void *)th, (void *)th->thread_id);
    if (th == GET_THREAD()) {
        /* kill myself immediately */
        rb_threadptr_to_kill(th);
    }
    else {
        rb_threadptr_pending_interrupt_enque(th, eKillSignal);
        rb_threadptr_interrupt(th);
    }
    return thread;
}