现在很多语言都内置了线程池实现,但C++中却没有。本文列举一些C++实现的线程池工具。

  • Boost.Threadpool

项目首页:http://threadpool.sourceforge.net

Boost.Threadpool是一个基于Boost、跨平台的C++线程池库。Boost.Threadpool提供了一个便捷的任务调度异步的途径。线程池可以定制,动态管理,易于集成到您的软件项目中。该库已经在多个商业服务器程序中使用,并没有任何问题的处理高负荷业务。

使用示例:

#include "threadpool.hpp"
void normal_task();
void important_task();
void execute_prioritized()
{
// Create prioritized thread pool
boost::threadpool::prio_pool tp; //scoped_pool<boost::threadpool::prio_pool, 0> tp; // Add some tasks to the pool.
tp += boost::threadpool::prio_task_func(, &normal_task);
tp += boost::threadpool::prio_task_func(, &important_task);
tp += boost::threadpool::prio_task_func(, &normal_task); // Add the some threads to the pool. This will start the execution of the tasks.
tp->resize(); // The tasks are processed according to their priority:
// important_task(100), nonrelevant_task(7), nonrelevant_task(5).
tp->wait();
// Now all tasks are finished and the pool will be destroyed safely when tp goes out of scope.
}

boost.threadpool

  • ffead-cpp

项目首页:http://code.google.com/p/ffead-cpp

这是一个雄心勃勃的项目,它旨在将C++带入Web开发的世界。正像在它的介绍页面所声明的那样:

  “该框架是为C++平台上快速发展的企业级应用而开发。 这是一个C++的Web框架,C++应用程序框架,C++的REST框架和C++的soap框架,这些框架都内置其中。 它包含Linux/Windows(通过Cygwin)的实现。它是第一个也是唯一的提供非侵入性的依赖注入、业务驱动的组件逻辑、基于POCO发展的C++应用程序框架。大部分的功能是由配置文件控制。”

  • POCO C++ libraries

项目首页:http://pocoproject.org/

POCO库是一个使用现代标准ANSI C++以及C++标准库实现的框架。该框架近似完美实现(压缩,数据访问,SSL,加密,XML,线程,IPC-任何你能想到的在程序开发中的东西,它都包含)。它采用Boost授权许可证,而且似乎有很多的用户。

  • Linux下的一个ThreadPool

项目首页:http://www.hlnum.org/english/projects/tools/threadpool/index.html

是一个非常简单的基于lib_pthread的实现。你可以基于它实现你的代码,而且很可能会按需进行一些进一步的修改。正如在其主页的介绍,它是:

“一个基于POSIX线程库的线程池实现。它实现的池是阻塞的,直到有一个job到来,然后它选择一个空闲线程,并在其上运行这个job。如果此时没有可用的空闲线程,该线程池会阻塞直到某一正在运行job的线程结束”。

  • Windows下的Thread Pool API

项目首页:http://msdn.microsoft.com/en-us/library/windows/desktop/ms686766%28v=vs.85%29.aspx

令人惊讶的是Windows也提供了线程池管理的API,而且还有两套。一套用在Windows XP中,一套用在Windows Vista中,而现在微软只更新第二套API。

欢迎留言补充!

搜集C++实现的线程池的更多相关文章

  1. android线程池

    线程池的基本思想还是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理.当有线程任务时,从池中取一个,执行完成后线程对象归池,这样可以避免反复创建线程 ...

  2. spring提供的线程池

    SPRING中的线程池ThreadPoolTaskExecutor 分类: JAVA Spring2013-07-12 10:36 14896人阅读 评论(9) 收藏 举报 Spring线程池多线程 ...

  3. Executors线程池

    强烈建议程序员使用较为方便的 Executors 工厂方法 Executors.newCachedThreadPool()(无界线程池,可以进行自动线程回收).Executors.newFixedTh ...

  4. Executor框架(三)线程池详细介绍与ThreadPoolExecutor

    本文将介绍线程池的设计细节,这些细节与 ThreadPoolExecutor类的参数一一对应,所以,将直接通过此类介绍线程池. ThreadPoolExecutor类 简介   java.uitl.c ...

  5. SPRING中的线程池ThreadPoolTaskExecutor(转)

    转自:https://blog.csdn.net/zhanglongfei_test/article/details/51888433 一.初始化 1,直接调用 ThreadPoolTaskExecu ...

  6. 面试必备:Java线程池解析

    前言 掌握线程池是后端程序员的基本要求,相信大家求职面试过程中,几乎都会被问到有关于线程池的问题.我在网上搜集了几道经典的线程池面试题,并以此为切入点,谈谈我对线程池的理解.如果有哪里理解不正确,非常 ...

  7. Java并发包线程池之ThreadPoolExecutor

    参数详解 ExecutorService的最通用的线程池实现,ThreadPoolExecutor是一个支持通过配置一些参数达到满足不同使用场景的线程池实现,通常通过Executors的工厂方法进行配 ...

  8. Java ExecutorService四种线程池及自定义ThreadPoolExecutor机制

    一.Java 线程池 Java通过Executors提供四种线程池,分别为:1.newCachedThreadPool:创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收 ...

  9. Java并发编程实战 第8章 线程池的使用

    合理的控制线程池的大小: 下面内容来自网络.不过跟作者说的一致.不想自己敲了.留个记录. 要想合理的配置线程池的大小,首先得分析任务的特性,可以从以下几个角度分析: 任务的性质:CPU密集型任务.IO ...

随机推荐

  1. javascript 字符数组转换成以逗号隔开的字符串

    var ids = [];angular.forEach(pulsarServers,function (server) { ids.push(server.id);});ids = ids.join ...

  2. 使用async-http-client实现异步批量http请求

    最近项目中需要在微服务中调用rest接口,而且需要调用得次数很多,所以同步得http客户端已经不满足要求,在网上查阅资料后发现了async-http-client这个包得性能不错,所以写了个demo测 ...

  3. 修改Python IDLE代码配色及语法高亮主题

    初学Python,想必大家拿来练习最多的IDE就是Python自带的IDLE了,但是默认的代码配色及语法高亮主题确实很不适应,所以我们需要做个小小的美化,比如像下面这样我做的美化配置: HOW TO ...

  4. 使用百度webuploader实现大文件上传

    版权所有 2009-2018荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webapp/up6.2/in ...

  5. spring mvc与mybatis整合错误提示

    java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()L ...

  6. Oracle财务系统常用标准报表

    http://erpoperator.blog.163.com/blog/static/17899637220111181121616/ Oracle财务系统常用标准报表 总账系统 系统报表名 中文译 ...

  7. Android 文件模式

    在Android文件模式中,非常欣赏Android统一资源管理模式的思想: 分为系统应用APP(以包名为唯一标识) 和普通应用APP(以包名为唯一标识) 每个包名下有自己的 cache files d ...

  8. Elasticsearch 的一些关键概念

    我更喜欢把 Elasticsearch 作为一种 nosql 去理解,它的一些开发概念和 MongoDB 以及 Redis 没有太大的区别,不过了解 Elasticsearch 中的一些核心概念对于你 ...

  9. 简易Python语句获取本机ip地址

    import os, socket def public_ip(): try: s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.conne ...

  10. CentOS 7 安装并配置 MySQL 5.6

    Linux使用MySQL Yum存储库上安装MySQL 5.6,适用于Oracle Linux,Red Hat Enterprise Linux和CentOS系统. 1.添加MySQL Yum存储库 ...