// // AsyncTaskQueue.hpp // Clock Signal // // Created by Thomas Harte on 07/10/2016. // Copyright © 2016 Thomas Harte. All rights reserved. // #ifndef AsyncTaskQueue_hpp #define AsyncTaskQueue_hpp #include #include #include #include namespace Concurrency { class AsyncTaskQueue { public: AsyncTaskQueue(); ~AsyncTaskQueue(); void enqueue(std::function function); void synchronise(); private: std::unique_ptr thread_; std::mutex queue_mutex_; std::list> pending_tasks_; std::condition_variable processing_condition_; std::atomic_bool should_destruct_; }; } #endif /* Concurrency_hpp */