Issue #4770 has been updated by Motohiro KOSAKI. Status changed from Assigned to Closed ---------------------------------------- Bug #4770: [Q] thread->interrupt_flag ?????©å????«æ??ä»???¶å¾¡????????¦ã????ªã??????????«è???????? http://redmine.ruby-lang.org/issues/4770 Author: Motohiro KOSAKI Status: Closed Priority: Normal Assignee: Motohiro KOSAKI Category: core Target version: 1.9.3 ruby -v: - kosaki??§ã?? Ruby VM internal ??«è©³????????¹ã????«è³ª????§ã???????¨ã??thread->interrupt_flag??¯ã?©ã???????£ã?¦æ??ä»???¶å¾¡??????????????¶ã?¤ã?³ã?«ã?ªã?£ã?¦ã????¾ã????§ã???????????ï¼? ??¨ã???????¾ã????®ã?? ï¼?ï¼ ?????????????¹ã?¯ã?¨ã????¦ä½¿??£ã?¦ã???????®ã?§æ??ä»???¶å¾¡?????ªã????¨ã????©ã?°ã????ã?¹ã???????¦ã????????äº???«ã?ªã???????? #define RUBY_VM_SET_INTERRUPT(th) ((th)->interrupt_flag |= 0x02) #define RUBY_VM_SET_TIMER_INTERRUPT(th) ((th)->interrupt_flag |= 0x01) #define RUBY_VM_SET_FINALIZER_INTERRUPT(th) ((th)->interrupt_flag |= 0x04) #define RUBY_VM_INTERRUPTED(th) ((th)->interrupt_flag & 0x02) ï¼?ï¼ ?²ã??è¾¼ã?¿å?¦ç????§ã????©ã?°ã????ªã?»ã???????????ç®??????§ã??GVL????????¨ã?£ã?¦ã?ªã?? static void rb_threadptr_execute_interrupts_rec(rb_thread_t *th, int sched_depth) { (snip) while (th->interrupt_flag) { enum rb_thread_status status = th->status; int timer_interrupt = th->interrupt_flag & 0x01; int finalizer_interrupt = th->interrupt_flag & 0x04; th->interrupt_flag = 0; ï¼?ï¼ ?¿ã?¤ã????¼ã?¹ã?¬ã????????TIMER_INTERRUPT bit???ç«???¦ã???????«ã??timer_thread_lock ???????????£ã?¦ã?ªã?? static void timer_thread_function(void *arg) { rb_vm_t *vm = GET_VM(); /* TODO: fix me for Multi-VM */ /* for time slice */ RUBY_VM_SET_TIMER_INTERRUPT(vm->running_thread); ï¼?ï¼?thread.c ??§ã?? RUBY_VM_SET_INTERRUPT??¼ã?¶ã?¨ã????? thread->interrupt_lock ????????? cont.c ??§ã?¯å???????ªã?? ï¼?ï¼?gc.c??? RUBY_VM_SET_FINALIZER_INTERRUPT ??¼ã?¶ã?¨ã????«ç?¹ã?«ã?ã????¯ã??????????ªã?? ??¨ã??????????ªã????ªã????´å????§ã????¨ã????¦ã????ªã??????????ªç?¶æ????«ã?ªã?£ã?¦ã???????????????????§ã???????ªã?«ã??è¦???½ã?¨ã????¦ã????¾ã????§ã???????????ï¼? ï¼? ä¸???¬ã???????¹ã?? interrupt_lock??§å???????®ã??????????®ã????ªã????¨æ????£ã????®ã?§ã?????????????????????? native_mutex_lock()??¢æ?°ã?? ï¼? thread.c 以å??????????¯å?¼ã?¹ã?ªã????®ã?§ã???????? -- http://redmine.ruby-lang.org