diff options
author | Martin v. Löwis <martin@v.loewis.de> | 2003-04-18 11:11:09 (GMT) |
---|---|---|
committer | Martin v. Löwis <martin@v.loewis.de> | 2003-04-18 11:11:09 (GMT) |
commit | 1509a152b37c04022b006ce1674f7c78453c388b (patch) | |
tree | 12a3a31845b0e04231ba2aa04944f3bfbb11f385 | |
parent | 69206528231d5d07565cbbabc0c030046d654f54 (diff) | |
download | cpython-1509a152b37c04022b006ce1674f7c78453c388b.zip cpython-1509a152b37c04022b006ce1674f7c78453c388b.tar.gz cpython-1509a152b37c04022b006ce1674f7c78453c388b.tar.bz2 |
Patch #711835: Remove unnecessary lock operations. Will backport to 2.2.
-rw-r--r-- | Python/thread_pthread.h | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/Python/thread_pthread.h b/Python/thread_pthread.h index e30982f..2596af5 100644 --- a/Python/thread_pthread.h +++ b/Python/thread_pthread.h @@ -497,27 +497,23 @@ PyThread_acquire_lock(PyThread_type_lock lock, int waitflag) status = pthread_mutex_lock( &thelock->mut ); CHECK_STATUS("pthread_mutex_lock[1]"); success = thelock->locked == 0; - if (success) thelock->locked = 1; - status = pthread_mutex_unlock( &thelock->mut ); - CHECK_STATUS("pthread_mutex_unlock[1]"); if ( !success && waitflag ) { /* continue trying until we get the lock */ /* mut must be locked by me -- part of the condition * protocol */ - status = pthread_mutex_lock( &thelock->mut ); - CHECK_STATUS("pthread_mutex_lock[2]"); while ( thelock->locked ) { status = pthread_cond_wait(&thelock->lock_released, &thelock->mut); CHECK_STATUS("pthread_cond_wait"); } - thelock->locked = 1; - status = pthread_mutex_unlock( &thelock->mut ); - CHECK_STATUS("pthread_mutex_unlock[2]"); success = 1; } + if (success) thelock->locked = 1; + status = pthread_mutex_unlock( &thelock->mut ); + CHECK_STATUS("pthread_mutex_unlock[1]"); + if (error) success = 0; dprintf(("PyThread_acquire_lock(%p, %d) -> %d\n", lock, waitflag, success)); return success; |