Method: Thread#kill
- Defined in:
- thread.c
#exit ⇒ Object #kill ⇒ Object #terminate ⇒ Object
Terminates thr and schedules another thread to be run, returning the terminated Thread. If this is the main thread, or the last thread, exits the process.
2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 |
# File 'thread.c', line 2766 VALUE rb_thread_kill(VALUE thread) { rb_thread_t *target_th = rb_thread_ptr(thread); if (target_th->to_kill || target_th->status == THREAD_KILLED) { return thread; } if (target_th == target_th->vm->ractor.main_thread) { rb_exit(EXIT_SUCCESS); } RUBY_DEBUG_LOG("target_th:%u", rb_th_serial(target_th)); if (target_th == GET_THREAD()) { /* kill myself immediately */ rb_threadptr_to_kill(target_th); } else { threadptr_check_pending_interrupt_queue(target_th); rb_threadptr_pending_interrupt_enque(target_th, RUBY_FATAL_THREAD_KILLED); rb_threadptr_interrupt(target_th); } return thread; } |