#ifndef DATAQUEUE_H #define DATAQUEUE_H #include #include #include #include "libsearch_global.h" namespace UkuiSearch { // TODO I want a unlocked queue template class LIBSEARCH_EXPORT DataQueue : protected QList { public: inline void enqueue(const T &t) { QMutexLocker locker(&m_mutex); QList::append(t); } inline T dequeue() { QMutexLocker locker(&m_mutex); return QList::takeFirst(); } inline void clear() { QMutexLocker locker(&m_mutex); QList::clear(); return; } inline bool isEmpty() { QMutexLocker locker(&m_mutex); return QList::isEmpty(); } inline T tryDequeue() { QMutexLocker locker(&m_mutex); if(QList::isEmpty()) { return T(); } else { return QList::takeFirst(); } } private: QMutex m_mutex; }; } #endif // DATAQUEUE_H