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/