"""
PySide stub files generated by **IceSpringPySideStubs**

Home: https://baijifeilong.github.io/2022/01/06/ice-spring-pyside-stubs/index.html

Github: https://github.com/baijifeilong/IceSpringPySideStubs

PyPI(PySide2): https://pypi.org/project/IceSpringPySideStubs-PySide2

PyPI(PySide6): https://pypi.org/project/IceSpringPySideStubs-PySide6

PyPI(PyQt5): https://pypi.org/project/IceSpringPySideStubs-PyQt5

PyPI(PyQt6): https://pypi.org/project/IceSpringPySideStubs-PyQt6

Generated by BaiJiFeiLong@gmail.com

License: MIT
"""
from PyQt5 import sip


class QRecursiveMutex(sip.simplewrapper):
    """
    https://doc.qt.io/qt-5/qrecursivemutex.html

    **Detailed Description**

    The QRecursiveMutex class is a mutex, like **QMutex** , with which it is
    API-compatible. It differs from **QMutex**  by accepting **lock** () calls
    from the same thread any number of times. **QMutex**  would deadlock in this
    situation.

    QRecursiveMutex is much more expensive to construct and operate on, so use a
    plain **QMutex**  whenever 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
    **QMutex**  in 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** , and **QWaitCondition** .
    """

    def __init__(self) -> None:
        """
        https://doc.qt.io/qt-5/qrecursivemutex.html#QRecursiveMutex

        **QRecursiveMutex::QRecursiveMutex()**

        Constructs a new recursive mutex. The mutex is created in an unlocked
        state.

        **See also** **lock** () and **unlock** ().
        """
        ...
