Skip to content

【A simple used C++ threadpool】一个简单好用,性能优异的,跨平台的C++线程池。欢迎 star & fork

Notifications You must be signed in to change notification settings

ChunelFeng/CThreadPool

Folders and files

NameName
Last commit message
Last commit date
Oct 11, 2022
Oct 5, 2022
Oct 5, 2022
Nov 9, 2024
Nov 1, 2023
Oct 10, 2022
Oct 21, 2024
Oct 5, 2022
Nov 9, 2024
Mar 7, 2023

Repository files navigation

languages os stars forks

CThreadPool 说明文档

一. 简介

CThreadPool 是一个跨平台的、无任何三方依赖的、高性能的C++11(含以上版本)版本的线程池,也是 CGraph 项目中使用的跨平台线程池组件功能的最小集。

经过CGraph和关联项目的长期迭代和验证,功能已经趋于稳定,且性能优异。因为咨询相关内容的朋友较多,故做为独立的仓库提供出来,方便大家使用。

由于是CGraph项目中的剥离出来的功能类,故在项目中保留了多处 CGRAPH_* 的命名方式,仅将 namespace 修改为 CTP,预计今后与CGraph相互独立更新。

本项目参考了《C++并发编程实战(第二版)》 中的部分内容,和github上的一些优秀实现。并在此基础上进行大量的改动、扩展和优化,在功能、性能和易用性上均有较大的提升。

在开发过程中,也沉淀了详细的说明文档(见下方 推荐阅读),以便于大家快速了解代码和思路,也请大家不吝指教。

二. 编译说明

  • 本工程支持MacOS、Linux和Windows系统,无任何第三方依赖。推荐使用C++11(默认)或以上版本,不支持以下C++11以下版本

  • 使用CLion或使用Visual Studio 15(或以上版本)作为IDE的开发者,打开CMakeLists.txt文件作为工程,即可编译通过

  • Linux环境开发者,在命令行模式下,输入以下指令,即可编译通过

$ git clone https://github.com/ChunelFeng/CThreadPool.git
$ cd CThreadPool
$ cmake . -Bbuild
$ cd build
$ make -j8

三. 使用Demo

#include "src/CThreadPool.h"

using namespace CTP;

float add_by_5(float i) {
    return i + 5.0f;
}

int main() {
    UThreadPool tp;
    int i = 6, j = 3;
    auto r1 = tp.commit([i, j] { return i - j; });
    std::future<float> r2 = tp.commit(std::bind(add_by_5, 8.5f));

    std::cout << r1.get() << std::endl;
    std::cout << r2.get() << std::endl;
    return 0;
}

更多使用方法,请参考 tutorial.cpp 中的例子和文档中的内容。

四. 推荐阅读

五. 关联项目


附录-1. 版本信息

[2022.10.05 - v1.0.0 - Chunel]

  • 提供线程池基本功能
  • 提供对应的tutorial信息

[2022.10.07 - v1.0.1 - Chunel]

  • 提供默认开启辅助线程的配置

[2022.10.11 - v1.1.0 - MirrorYuChen]

  • 提供针对C++11版本的支持

[2023.03.07 - v1.2.0 - Chunel]

  • 优化windows版本功能

[2023.11.09 - v1.2.1 - Chunel]

  • 更新执行策略,优化整体性能
  • 修复辅助线程唤醒延时的问题

附录-2. 联系方式

CGraph Author