Spec-Zone.ru › Qt 5.15

Класс 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.15/qrecursivemutex.html

Spec-Zone.ru

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