当前位置: 首页 > news >正文

高性能无锁队列 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;
    };
}

                

相关文章:

  • Elasticsearch底层原理分析——新建、索引文档
  • Docker
  • C#中的迭代器和分部类
  • 2分钟快速实现非逻辑卷磁盘扩容
  • 异步组件与函数式组件
  • matlab提取特征(医学图像)
  • [架构之路-248]:目标系统 - 设计方法 - 软件工程 - 需求工程- 需求开发:如何用图形表达需求,结构化需求分析与面向对象需求分析的比较与融合
  • Flask Web开发实验一:第一个Flask项目与Flask的工作方式
  • Android 打包aar包含第三方aar 解决方案
  • 最新发布 Spring Boot 3.2.0 新特性和改进
  • 防爆智能安全帽、防爆手持终端,防爆智能矿灯守护安全,在煤矿安全生产远程可视化监管中的应用
  • 蓝桥杯day01——负二进制数相加
  • Lubuntu 23.10用户可使用LXQt 1.4桌面
  • 『亚马逊云科技产品测评』活动征文|AWS 存储产品类别及其适用场景详细说明
  • QMenu 是 Qt 框架中的一个类,用于创建和管理弹出式菜单
  • JavaEE(SpringMVC)期末复习(选择+填空+解答)
  • Jenkins 保姆级教程
  • 设计模式-迭代器模式
  • AMEYA360:村田首款1608M尺寸/100V静电容量1µF的MLCC实现商品化
  • Object.keys方法之详解
  • 做质量计量的网站有哪些/营销推广活动方案
  • 公司网站平台/seo有名气的优化公司
  • 昆明网站建设技术公司/官网整站优化
  • 建设企业官方网站/福清seo
  • 教育机构排名/阿里网站seo
  • 哪家做网站好 成都/信息流广告的特点