#pragma once #include #include #include #include #include namespace vi { class TaskQueue; class TaskQueueManager { public: static std::unique_ptr& instance(); ~TaskQueueManager(); void create(const std::vector& nameList); TaskQueue* queue(const std::string& name); bool hasQueue(const std::string& name); private: void clear(); bool exist(const std::string& name); private: TaskQueueManager(); TaskQueueManager(TaskQueueManager&&) = delete; TaskQueueManager(const TaskQueueManager&) = delete; TaskQueueManager& operator=(const TaskQueueManager&) = delete; private: std::mutex m_mutex; std::unordered_map> m_queueMap; }; } #define TQMgr vi::TaskQueueManager::instance() #define TQ(name) TQMgr->queue(name)