/
MaximU
/
application
Обзор
Документация
Войти
/
MaximU
/
application
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
lockingqueue.h
99 строк
2 KB
user
Упорядочены #include.
27 июл 2026, 14:34
27 июл 2026, 14:34
174be87
Код
Авторство
О чём код?
#ifndef LOCKINGQUEUE_H #define LOCKINGQUEUE_H #include <QMutex> #include <QMutexLocker> #include <QQueue> /*! * \brief Класс блокирующейся очереди. */ template<typename T> class LockingQueue : public QQueue<T> { private: QMutex mMutex; //!< Объект синхронизации. public: /*! * \brief Конструктор. */ LockingQueue() { } /*! * \brief Деструктор. */ ~LockingQueue() { } /*! * \brief Добавляет в очередь элемент. * \param item Добавляемый элемент. */ void enqueue(T item) { QMutexLocker locker(&mMutex); QQueue<T>::enqueue(item); } /*! * \brief Изымает из очереди элемент. * \return Изымаемый элемент. */ T dequeue() { QMutexLocker locker(&mMutex); T element = 0; if (!QQueue<T>::isEmpty()) { element = QQueue<T>::dequeue(); } return element; } /*! * \brief Возвращает признак пустого списка. * \return Признак пустого списка. */ bool isEmpty() { QMutexLocker locker(&mMutex); return QQueue<T>::isEmpty(); } /*! * \brief Возвращает размер списка. * \return Размер списка. */ int size() { QMutexLocker locker(&mMutex); return QQueue<T>::size(); } /*! * \brief Блокирует выполнение операции. */ void lock() { mMutex.lock(); } /*! * \brief Разблокирует выполнение операции. */ void unlock() { mMutex.unlock(); } }; #endif // LOCKINGQUEUE_H