Issue #7505 has been updated by tarui (Masaya Tarui). å¤???????????????????äº????????????¨ã??????????®ã?§ã???????? mutex=Mutex.new Thread.new{ mutex.synchronize{ begin sleep 1 mutex.sleep ensure ??ªã?½ã?¼ã?¹è§£??? end } } mutex.syncronize{ sleep 10 } mutex.sleep???mutex????????¾ã????¦ã???????????C-c????????????mutex???確ä?????????????¨ã????????確ä????§ã????ªã????£ã????¨ã????¦ã?? ??????mutex???確ä???????¦ã?????Thread???æ»ã?ªã?ªã????¨è???????ªã????®ã?§ã????????mutex??¯è§£??¾ã???????¦ã?? mutex.sleep??®æ?¹ã??mutex???????????????????????¡ã????§ã???????????ï¼? ??ªã?®ã?§ã??mutex??????????????¾ã?§å????¤ã???????«ä¿®æ£ã???????¹é???????¼ã??????????¨æ???????¾ã????? ??¤ã?¾ã?????1,2,3???????????®ä????§ã??mutex???ä¿??????????ensure??«å?¥ã??????????«ã??????????? ---------------------------------------- Feature #7505: Mutex#owned? ??¡ã?½ã???????®æ?°è¨ https://bugs.ruby-lang.org/issues/7505#change-34366 Author: kosaki (Motohiro KOSAKI) Status: Open Priority: Normal Assignee: Category: core Target version: next minor 以ä????®ã???????ªã????ã?°ã?©ã??????????£ã????¨ã????¾ã????? Thread.async_interrupt_timing(Object => :on_blocking) { begin ??????mutex = Mutex.new mutex.synchronize { sleep 1 condvar.wait mutex ???} ensure ??ªã?½ã?¼ã?¹è§£??¾ã???????? end } mutex.synchronize??®ä¸???Ctrl-c?????¼ã???????¨ã???????²ã??è¾¼ã?¾ã???????½æ?§ã?®ã?????ç®???????ä¸???¶æ??????????¾ã?? 1) sleep 2) mutex.sleep?????®ä¸???native_sleepï¼?condvar.signal å¾???¡ï?? 3) mutex.sleep?????®ä¸???rb_mutex_lock(condvar.signal??§èµ·åº????????????????mutex?????¥ã?¹ã?¬ã????????使ç?¨ä¸?????£ã????????mutexå¾???¡ï?? ?????®ã?¨ã?????ï¼???¨ï?????mutex????????£ã????¾ã??ensure??«å?¥ã????¾ã????????ï¼????mutex???????????????ensure??«å?¥ã?£ã?¦ã????¾ã?????????????«æ?ªã???????¨ã?«ï????¨ï?????Ruby????????¯å???????¡ã?½ã??????????«ã??????????????ruby??¬ã????«ã?? workaround????????????????????¨ã????§ã????¾ã???????? ??ªã?½ã?¼ã?¹ã??æ£ã????£æ?¾ã????????段ã???????ªã???????¨ã???????®ã?¯å????§ã???????®ã?§ã??Mutex#owned? ??¡ã?½ã???????®æ?°è¨??????æ¡??????¾ã??????????????Mutex#locked? ??¨ã?¯ç?°ã?ªã????ªå???????ã????¯ã???????£ã?¦ã???????¨ã????®ã??true???è¿??????¾ã?? ???????????¥Ã轡¦èº? https://gist.github.com/4195632 以ä??ä½?è«????POSIX?????¨ã??pthread_cond_wait??¯ã?ã?£ã?³ã?»ã?¬ã?¼ã?·ã?§ã?³ã????¤ã?³ã????§ã?¯ã?ªã??????????ªã?«ã?????????????¨ã??Mutex???lock???çµ?????£ã?¦ã???????¢æ?°ã??????????¦ã??????®ã?§ã????????????????¯ã???????¾ã????????????????«æ??????????¨ã???????????????????®ã?§ã??????????????????????¨å?¥ã?¹ã?¬ã??????????ã????¯ã???????£ã????¾ã?¾ã?§ã????????Ctrl-C?????¹ã????ªã???ªã????®ã??akr????????®å¥½??¿ã?«ã?¯ã??????ªã??????????? -- http://bugs.ruby-lang.org/