#ifndef PROJECT_TSQUEUE_H #define PROJECT_TSQUEUE_H #include #include #include namespace ffcpp { template class TSQueue { private: using LockType = std::lock_guard; private: mutable std::mutex _mutex; std::condition_variable _cond; std::queue> _queue; public: bool empty() const { LockType lock(_mutex); return _queue.empty(); } void push(T value) { auto data = std::make_shared(std::move(value)); LockType lock(_mutex); _queue.push(data); _cond.notify_one(); } }; } #endif //PROJECT_TSQUEUE_H