// Shared_Queue.hh #include #include #include #include #ifndef SHARED_QUEUE_HH #define SHARED_QUEUE_HH template class SharedQueue { public: SharedQueue() : _q(), _q_mutex(), _q_cv() {}; SharedQueue( const SharedQueue& other ) { std::cout << "Copy Constructor SharedQueue" << std::endl; // (Read)Lock the other queue for copying std::unique_lock other_lock(other._q_mutex); _q = other._q; } std::queue * queue() { return& _q; } std::mutex * mutex() { return& _q_mutex; } std::condition_variable * cv() { return& _q_cv; } private: // Queue std::queue _q; // Synchronisation std::mutex _q_mutex; std::condition_variable _q_cv; }; #endif