搜集C++实现的线程池
现在很多语言都内置了线程池实现,但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++实现的线程池的更多相关文章
- android线程池
线程池的基本思想还是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理.当有线程任务时,从池中取一个,执行完成后线程对象归池,这样可以避免反复创建线程 ...
- spring提供的线程池
SPRING中的线程池ThreadPoolTaskExecutor 分类: JAVA Spring2013-07-12 10:36 14896人阅读 评论(9) 收藏 举报 Spring线程池多线程 ...
- Executors线程池
强烈建议程序员使用较为方便的 Executors 工厂方法 Executors.newCachedThreadPool()(无界线程池,可以进行自动线程回收).Executors.newFixedTh ...
- Executor框架(三)线程池详细介绍与ThreadPoolExecutor
本文将介绍线程池的设计细节,这些细节与 ThreadPoolExecutor类的参数一一对应,所以,将直接通过此类介绍线程池. ThreadPoolExecutor类 简介 java.uitl.c ...
- SPRING中的线程池ThreadPoolTaskExecutor(转)
转自:https://blog.csdn.net/zhanglongfei_test/article/details/51888433 一.初始化 1,直接调用 ThreadPoolTaskExecu ...
- 面试必备:Java线程池解析
前言 掌握线程池是后端程序员的基本要求,相信大家求职面试过程中,几乎都会被问到有关于线程池的问题.我在网上搜集了几道经典的线程池面试题,并以此为切入点,谈谈我对线程池的理解.如果有哪里理解不正确,非常 ...
- Java并发包线程池之ThreadPoolExecutor
参数详解 ExecutorService的最通用的线程池实现,ThreadPoolExecutor是一个支持通过配置一些参数达到满足不同使用场景的线程池实现,通常通过Executors的工厂方法进行配 ...
- Java ExecutorService四种线程池及自定义ThreadPoolExecutor机制
一.Java 线程池 Java通过Executors提供四种线程池,分别为:1.newCachedThreadPool:创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收 ...
- Java并发编程实战 第8章 线程池的使用
合理的控制线程池的大小: 下面内容来自网络.不过跟作者说的一致.不想自己敲了.留个记录. 要想合理的配置线程池的大小,首先得分析任务的特性,可以从以下几个角度分析: 任务的性质:CPU密集型任务.IO ...
随机推荐
- python中的list和array的不同之处 及转换
python中的list和array的不同之处list是列表,可以通过索引查找数值,但是不能对整个列表进行数值运算 In [96]: b=[1,2] In [97]: b[1]Out[97]: 2In ...
- 8b10b
目的:保持直流平衡DC Balance). running disparity() 8bit原始数据会分成两部分,其低5位会进行5B/6B编码,高3位则进行3B/4B编码,这两种映射关系在当时已经成为 ...
- dropzonejs中文翻译手册
由于项目需要,完成一个web的图片拖拽上传,也就顺便学习和了解了一下前端的比较新的技术:HTML5的api,作为一名前端的菜鸟,没什么可说的,直接分享自己学习的资料: 关于HTML5 的这些新的特性大 ...
- 第二届普适计算和信号处理及应用国际会议论文2016年 The 2nd Conference on Pervasive Computing, Signal Processing and Applications(PCSPA, 2016)
A New Method for Mutual Coupling Correction of Array Output Signal 一种阵列输出信号互耦校正的新方法 Research of Robu ...
- noip第10课作业
1. 统计不同类型字符出现次数 [问题描述] 输入一个字符串(假设长度不超过1000个字符),统计其中大写,小写,数字,其他字符出现的次数. [样例输入]Hello,what are you ...
- java 泛型的类型擦除和桥方法
oracle原文地址:https://docs.oracle.com/javase/tutorial/java/generics/erasure.html 在Java中,泛型的引入是为了在编译时提供强 ...
- Americans are usually tolerant (Listen speak of Unit 2)
Americans are usually 1) tolerant of non-native speakers who have some 2) trouble understanding Engl ...
- Android-Xml,PullParser,解析
在上一篇博客,Android-XML格式描述,介绍来XML在Android中的格式: 解析persons.xml文件内容: <?xml version="1.0" encod ...
- WinRT 中检查 WiFi 是否可用
public static bool IsWifiConnected() { bool isWifiConnected = false; ConnectionProfile currentConnec ...
- Mac iTerm2登陆CentOS提示warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory
[报错原因]:没有utf-8这个语系(没添加语言_国名前缀),LC_ALL又没设定值. 服务端解决方法: 在远程系统上, /etc/environment 加入以下两行,重新登陆即可. LANG=en ...