]> granicus.if.org Git - python/commitdiff
Merged revisions 76007 via svnmerge from
authorAntoine Pitrou <solipsis@pitrou.net>
Sun, 1 Nov 2009 12:05:48 +0000 (12:05 +0000)
committerAntoine Pitrou <solipsis@pitrou.net>
Sun, 1 Nov 2009 12:05:48 +0000 (12:05 +0000)
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.
........

Modules/_io/bufferedio.c

index 3dec67b5c6b92059b2d910ee3843512e477d96ee..dd4e53f0f2dfaef8aec9d0d5ae7f5e7c223983b6 100644 (file)
@@ -260,9 +260,11 @@ typedef struct {
 
 #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);