[前][次][番号順一覧][スレッド一覧]

ruby-changes:27774

From: kosaki <ko1@a...>
Date: Wed, 20 Mar 2013 03:26:23 +0900 (JST)
Subject: [ruby-changes:27774] kosaki:r39826 (trunk): * thread.c (ruby_kill): release GVL while waiting signal delivered.

kosaki	2013-03-20 03:26:11 +0900 (Wed, 20 Mar 2013)

  New Revision: 39826

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=39826

  Log:
    * thread.c (ruby_kill): release GVL while waiting signal delivered.

  Modified files:
    trunk/ChangeLog
    trunk/thread.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 39825)
+++ ChangeLog	(revision 39826)
@@ -1,3 +1,7 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1
+Sat Mar 16 03:36:56 2013  KOSAKI Motohiro  <kosaki.motohiro@g...>
+
+	* thread.c (ruby_kill): release GVL while waiting signal delivered.
+
 Tue Mar 19 19:50:48 2013  NAKAMURA Usaku  <usa@r...>
 
 	* ruby_kill (internal.h, thread.c): use rb_pid_t instead of pid_t.
Index: thread.c
===================================================================
--- thread.c	(revision 39825)
+++ thread.c	(revision 39826)
@@ -5211,10 +5211,12 @@ ruby_kill(rb_pid_t pid, int sig) https://github.com/ruby/ruby/blob/trunk/thread.c#L5211
     rb_vm_t *vm = GET_VM();
 
     if ((th == vm->main_thread) && (pid == getpid())) {
+	GVL_UNLOCK_BEGIN();
 	native_mutex_lock(&th->interrupt_lock);
 	err = kill(pid, sig);
 	native_cond_wait(&th->interrupt_cond, &th->interrupt_lock);
 	native_mutex_unlock(&th->interrupt_lock);
+	GVL_UNLOCK_END();
     } else {
 	err = kill(pid, sig);
     }

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]