c++设计线程池(3)需求分析 发表于 2024-06-08 我们实现的是一个线程池,他是一个应用的一部分组件,可以算作一个库。并不能算作中间件。因为,他不能够独立完成一个功能或服务。 最终打包成一个动态库供别人使用。 使用方式12345678910// 建立线程池对象ThreadPool pool;// 选择模式,固定大小或者可变大小pool.setMode(fixed(default) | cached);// 启动线程池pool.start();// 提交任务到线程池,返回任务计算完成的的值(可选的返回值,也可能没有)Result result = pool.submitTask(concreteTask);// 获得最终的结果类型result.get().Cast<>(); 还需要一个线程容器存放Thread对象。(也是有大小的) 还需要一个任务容器存放任务对象。(也是有大小的) 任务容器存放的是任务抽象基类(里面有一个纯虚函数run方法),以便可以存放任何任务。用户需要继承task基类来实现自己的任务。 条件变量加互斥锁确保task容器线程安全。