Small optimisation to recursive mutexes
authorThiago Macieira <thiago.macieira@intel.com>
Wed, 15 Aug 2012 20:37:42 +0000 (22:37 +0200)
committerQt by Nokia <qt-info@nokia.com>
Sun, 26 Aug 2012 11:57:58 +0000 (13:57 +0200)
A recursive mutex operates on top of a non-recursive mutex. Therefore,
we can bypass the test for recursive.

The end result is simply that the compiler can inline the locking and
unlocking a little better inside the lock() and unlock() functions

Change-Id: Ic06d1344ccd411c22cbdef74536f3a4d368d75d7
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
src/corelib/thread/qmutex.cpp

index 1d35b76..1a064a1 100644 (file)
@@ -520,7 +520,7 @@ bool QRecursiveMutexPrivate::lock(int timeout) QT_MUTEX_LOCK_NOEXCEPT
     }
     bool success = true;
     if (timeout == -1) {
-        mutex.lock();
+        mutex.QBasicMutex::lock();
     } else {
         success = mutex.tryLock(timeout);
     }
@@ -539,7 +539,7 @@ void QRecursiveMutexPrivate::unlock() Q_DECL_NOTHROW
         count--;
     } else {
         owner = 0;
-        mutex.unlock();
+        mutex.QBasicMutex::unlock();
     }
 }