]> granicus.if.org Git - python/commitdiff
Patch #711835: Remove unnecessary lock operations. Will backport to 2.2.
authorMartin v. Löwis <martin@v.loewis.de>
Fri, 18 Apr 2003 11:11:09 +0000 (11:11 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Fri, 18 Apr 2003 11:11:09 +0000 (11:11 +0000)
Python/thread_pthread.h

index e30982fc4f8be5c8977ed2841ac84bbc498f1940..2596af55c60c12a6a5f4e55eb47e13e2633fb8b9 100644 (file)
@@ -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;