现在很多语言都内置了线程池实现,但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. (匹配 二维建图) Antenna Placement --POJ --3020

    链接: http://poj.org/problem?id=3020 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82834#probl ...

  2. Lucene.net 性能《第八篇》

    一.IndexReader性能分析 IndexReader完成了打开所有索引文件和提供底层reader API等繁重的工作,而IndexSearch则要简单得多.由于打开一个IndexReader需要 ...

  3. java socket编程(也是学习多线程的例子)详细版----转

    7.2 面向套接字编程    我们已经通过了解Socket的接口,知其所以然,下面我们就将通过具体的案例,来熟悉Socket的具体工作方式 7.2.1使用套接字实现基于TCP协议的服务器和客户机程序  ...

  4. VCL消息处理机制

    http://www.cnblogs.com/railgunman/archive/2010/12/10/1902524.html#2868236 说到VCL中的消息处理就不能不提到TApplicat ...

  5. Android-Git命令行操作

    Git命令行操作,在Mac上使用的话,Mac会自带了Git,直接在终端或者iTerm都可以执行Git命令操作:    Git命令行操作,在Windows系统电脑上使用的话,需要安装Git,安装好Git ...

  6. LeetCode147:Insertion Sort List

    题目: Sort a linked list using insertion sort. 解题思路: 按题目要求,直接进行插入排序 实现代码: #include <iostream> us ...

  7. 记一次IIS站点出错的解决过程

    记一次IIS站点出错的解决过程 以前一直都是人家用着系统出问题了反馈过来这边改,没想到这回就发生在自己使用的过程中 问题经过 我正在执行一个操作,保存了没有返回提示,打开浏览器控制台查看网络,请求返回 ...

  8. C#数组的定义,不定长的数组?

    首先,在这里我要说明的是,C#中,定义了数组,那么就必须为其指定长度,且他的长度确定,不能够更改.一旦定义一个数组,那么操作系统就在内存中给这个数组指定了一块内存,他是不支持动态分配存储空间的.能够动 ...

  9. .net core An assembly specified in the application dependencied mainfest<****.json>was not found解决办法

    最近在开发项目中,遇到了一个问题.在本机开发中部署到本机iis上或者本机控制台都没有问题,运行正常.当发布部署到服务器(windowsServer)中的时候一直运行不起来,用控制台也运行不起来,直接报 ...

  10. uwp ListView列表滑动特效

    在看过一篇文章 WPF自定义控件之列表滑动特效 PowerListBox  http://www.cnblogs.com/ShenNan/p/4993374.html#3619585 实现了滑动的特效 ...