PySide6.QtCore.QRecursiveMutex¶
- class QRecursiveMutex¶
- The - QRecursiveMutexclass provides access serialization between threads. More…- Synopsis¶- Methods¶- def - __init__()
- def - lock()
- def - tryLock()
- def - try_lock()
- def - unlock()
 - Note - This documentation may contain snippets that were automatically translated from C++ to Python. We always welcome contributions to the snippet translation. If you see an issue with the translation, you can also let us know by creating a ticket on https:/bugreports.qt.io/projects/PYSIDE - Detailed Description¶- The - QRecursiveMutexclass is a mutex, like- QMutex, with which it is API-compatible. It differs from- QMutexby accepting- lock()calls from the same thread any number of times.- QMutexwould deadlock in this situation.- QRecursiveMutexis much more expensive to construct and operate on, so use a plain- QMutexwhenever you can. Sometimes, one public function, however, calls another public function, and they both need to lock the same mutex. In this case, you have two options:- Factor the code that needs mutex protection into private functions, which assume that the mutex is held when they are called, and lock a plain - QMutexin the public functions before you call the private implementation ones.
- Or use a recursive mutex, so it doesn’t matter that the first public function has already locked the mutex when the second one wishes to do so. 
 - See also - QMutex- QMutexLocker- QReadWriteLock- QSemaphore- QWaitCondition- __init__()¶
 - Constructs a new recursive mutex. The mutex is created in an unlocked state. - lock()¶
 - Locks the mutex. If another thread has locked the mutex then this call will block until that thread has unlocked it. - Calling this function multiple times on the same mutex from the same thread is allowed. - See also - tryLock([timer={}])¶
- Parameters:
- timer – - QDeadlineTimer
- Return type:
- bool 
 
 - Attempts to lock the mutex. This function returns - trueif the lock was obtained; otherwise it returns- false. If another thread has locked the mutex, this function will wait until- timeoutexpires for the mutex to become available.- If the lock was obtained, the mutex must be unlocked with - unlock()before another thread can successfully lock it.- Calling this function multiple times on the same mutex from the same thread is allowed. - tryLock(timeout)
- Parameters:
- timeout – int 
- Return type:
- bool 
 
 - Attempts to lock the mutex. This function returns - trueif the lock was obtained; otherwise it returns- false. If another thread has locked the mutex, this function will wait for at most- timeoutmilliseconds for the mutex to become available.- Note: Passing a negative number as the - timeoutis equivalent to calling- lock(), i.e. this function will wait forever until mutex can be locked if- timeoutis negative.- If the lock was obtained, the mutex must be unlocked with - unlock()before another thread can successfully lock it.- Calling this function multiple times on the same mutex from the same thread is allowed. - try_lock()¶
- Return type:
- bool 
 
 - Attempts to lock the mutex. This function returns - trueif the lock was obtained; otherwise it returns- false.- This function is provided for compatibility with the Standard Library concept - Lockable. It is equivalent to- tryLock().- unlock()¶
 - Unlocks the mutex. Attempting to unlock a mutex in a different thread to the one that locked it results in an error. Unlocking a mutex that is not locked results in undefined behavior. - See also