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

ruby-changes:19360

From: kosaki <ko1@a...>
Date: Sun, 1 May 2011 01:08:28 +0900 (JST)
Subject: [ruby-changes:19360] Ruby:r31400 (trunk): * thread.c (rb_thread_select): release GVL while waiting select().

kosaki	2011-05-01 01:08:20 +0900 (Sun, 01 May 2011)

  New Revision: 31400

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

  Log:
    * thread.c (rb_thread_select): release GVL while waiting select().

  Modified files:
    trunk/ChangeLog
    trunk/thread.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 31399)
+++ ChangeLog	(revision 31400)
@@ -1,3 +1,7 @@
+Sun May  1 01:06:24 2011  KOSAKI Motohiro  <kosaki.motohiro@g...>
+
+	* thread.c (rb_thread_select): release GVL while waiting select().
+
 Sat Apr 30 23:10:15 2011  KOSAKI Motohiro  <kosaki.motohiro@g...>
 
 	* win32/win32.c (rb_w32_fdcopy): New. This can copy even though
Index: thread.c
===================================================================
--- thread.c	(revision 31399)
+++ thread.c	(revision 31400)
@@ -2672,7 +2672,17 @@
 	return 0;
     }
     else {
-	return select(max, read, write, except, timeout);
+	int lerrno;
+	int result;
+
+	BLOCKING_REGION({
+		result = select(max, read, write, except, timeout);
+		if (result < 0)
+		    lerrno = errno;
+	    }, ubf_select, GET_THREAD());
+	errno = lerrno;
+
+	return result;
     }
 }
 

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

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