主页 > 手机  > 

高性能无锁队列moodycamel::ConcurrentQueue

高性能无锁队列moodycamel::ConcurrentQueue

在做一些服务器的架构设计的时候,你不得不考虑现成模型的设计,将不同的业务划分到不同的线程里,如何来调度这些任务是一个值得有经验的架构师需要思考的工作。

很多开发者一说到线程的任务调度就想到了线程池,给他创建一个线程池,多个线程不断地尝试获取任务的信号,一旦线程池里有任务了就唤醒其中一个或多个子线程去执行任务。

比如这段代码:

namespace utils { class ThreadTask { public: virtual int Run() = 0; }; class ThreadPool { public: ThreadPool(size_t, size_t); bool AppendTask(ThreadTask* task); void ThreadLoop(); void Stop(); ~ThreadPool(); size_t GetTasks(); private: // need to keep track of threads so we can join them std::vector< std::thread > workers; // the task queue std::queue< ThreadTask* > tasks; size_t max_tasks; // synchronization std::mutex queue_mutex; std::condition_variable condition; bool stop; }; }
标签:

高性能无锁队列moodycamel::ConcurrentQueue由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“高性能无锁队列moodycamel::ConcurrentQueue