From: Antoine Pitrou Date: Sun, 1 Nov 2009 12:05:48 +0000 (+0000) Subject: Merged revisions 76007 via svnmerge from X-Git-Tag: v3.2a1~2261 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5800b271043d52d34f22f68ad6c0339d2c4bc04a;p=python 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. ........ --- diff --git a/Modules/_io/bufferedio.c b/Modules/_io/bufferedio.c index 3dec67b5c6..dd4e53f0f2 100644 --- a/Modules/_io/bufferedio.c +++ b/Modules/_io/bufferedio.c @@ -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);