[Python-checkins] r76009 - in sandbox/trunk/newgil: Modules/_io/bufferedio.c

antoine.pitrou python-checkins at python.org
Sun Nov 1 13:26:15 CET 2009


Author: antoine.pitrou
Date: Sun Nov  1 13:26:15 2009
New Revision: 76009

Log:
Merged revisions 76008 via svnmerge from 
svn+ssh://pythondev@svn.python.org/python/branches/py3k

................
  r76008 | antoine.pitrou | 2009-11-01 13:05:48 +0100 (dim., 01 nov. 2009) | 9 lines
  
  Merged revisions 76007 via svnmerge from 
  svn+ssh://pythondev@svn.python.org/python/trunk
  
  ........
    r76007 | antoine.pitrou | 2009-11-01 12:58:22 +0100 (dim., 01 nov. 2009) | 3 lines
    
    Buffered I/O: optimize lock taking in the common non-contended case.
  ........
................


Modified:
   sandbox/trunk/newgil/   (props changed)
   sandbox/trunk/newgil/Modules/_io/bufferedio.c

Modified: sandbox/trunk/newgil/Modules/_io/bufferedio.c
==============================================================================
--- sandbox/trunk/newgil/Modules/_io/bufferedio.c	(original)
+++ sandbox/trunk/newgil/Modules/_io/bufferedio.c	Sun Nov  1 13:26:15 2009
@@ -260,9 +260,11 @@
 
 #ifdef WITH_THREAD
 #define ENTER_BUFFERED(self) \
-    Py_BEGIN_ALLOW_THREADS \
-    PyThread_acquire_lock(self->lock, 1); \
-    Py_END_ALLOW_THREADS
+    if (!PyThread_acquire_lock(self->lock, 0)) { \
+        Py_BEGIN_ALLOW_THREADS \
+        PyThread_acquire_lock(self->lock, 1); \
+        Py_END_ALLOW_THREADS \
+    }
 
 #define LEAVE_BUFFERED(self) \
     PyThread_release_lock(self->lock);


More information about the Python-checkins mailing list