From ed5a8c9665eb79c64b16dd28a39864169a446fcf Mon Sep 17 00:00:00 2001 From: selim mustafaev Date: Tue, 3 Jan 2017 15:46:56 +0300 Subject: [PATCH] added class for thread-safe queue --- include/ffcpp/TSQueue.h | 35 +++++++++++++++++++++++++++++++++++ src/CMakeLists.txt | 3 ++- 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 include/ffcpp/TSQueue.h diff --git a/include/ffcpp/TSQueue.h b/include/ffcpp/TSQueue.h new file mode 100644 index 0000000..99656cb --- /dev/null +++ b/include/ffcpp/TSQueue.h @@ -0,0 +1,35 @@ +#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 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1fc7910..451dd61 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -27,7 +27,8 @@ set(SOURCE_FILES MediaFile.cpp Resampler.cpp ../include/ffcpp/Resampler.h Player.cpp - ../include/ffcpp/Player.h ) + ../include/ffcpp/Player.h + ../include/ffcpp/TSQueue.h) add_library(ffcpp ${SOURCE_FILES}) target_link_libraries(ffcpp ${FFMPEG_LIBRARIES})