From b3824f6c5d1dd57ae0e823e42d0fdd0cd021dfdd Mon Sep 17 00:00:00 2001 From: "antoine.pitrou" Date: Sun, 1 Nov 2009 11:58:22 +0000 Subject: [PATCH] Buffered I/O: optimize lock taking in the common non-contended case. git-svn-id: http://svn.python.org/projects/python/trunk@76007 6015fed2-1504-0410-9fe1-9d1591cc4771 --- Modules/_io/bufferedio.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Modules/_io/bufferedio.c b/Modules/_io/bufferedio.c index 040f3bf9e7..9aa7d4b8b8 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); -- 2.11.4.GIT