Spec-Zone.ru › Qt 5.14

Класс QRecursiveMutex

Класс QRecursiveMutex обеспечивает сериализацию доступа между потоками. Подробнее...

Заголовок: #include <QRecursiveMutex>
qmake: QT += core
С тех пор: Qt 5.14
Наследует: QMutex (приватный)

Этот класс был представлен в Qt 5.14.

  • Список всех членов, включая унаследованные

Примечание: Все функции в этом классе являются безопасными для потоков.

Открытые функции

QRecursiveMutex()
~QRecursiveMutex()

Подробное описание

Класс QRecursiveMutex — это мьютекс, подобный QMutex, с которым он совместим по API. Он отличается от QMutex тем, что разрешает вызовы lock() из одного и того же потока любое количество раз. QMutex в такой ситуации приведет к тупиковой ситуации.

QRecursiveMutex значительно дороже в создании и работе, поэтому используйте обычный QMutex, когда это возможно. Иногда одна публичная функция вызывает другую публичную функцию, и обе им нужно заблокировать один и тот же мьютекс. В этом случае у вас есть два варианта:

  • Разделите код, требующий защиты мьютексом, на частные функции, которые предполагают, что мьютекс заблокирован при их вызове, и заблокируйте обычный QMutex в публичных функциях перед вызовом частных.
  • Или используйте рекурсивный мьютекс, чтобы не важно, что первая публичная функция уже заблокировала мьютекс, когда вторая хочет сделать это.

См. также QMutex, QMutexLocker, QReadWriteLock, QSemaphore и QWaitCondition.

Документация по функциям-членам

QRecursiveMutex::QRecursiveMutex()

Создаёт новый рекурсивный мьютекс. Мьютекс создаётся в разблокированном состоянии.

См. также lock() и unlock().

QRecursiveMutex::~QRecursiveMutex()

Удаляет мьютекс.

Предупреждение: Удаление заблокированного мьютекса может привести к неопределённому поведению.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qrecursivemutex.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API