Linux C++ 一个线程池的简单实现(附代码)
2010-05-08 17:19
956 查看
这是对pthread线程的一个简单应用
1. 实现了线程池的概念,线程可以重复使用。
2. 对信号量,互斥锁等进行封装,业务处理函数中只需写和业务相关的代码。
3. 移植性好。如果想把这个线程池代码应用到自己的实现中去,只要写自己的业务处理函数和改写工作队列数据的处理方法就可以了。
Sample代码主要包括一个主程序和两个线程实现类
ThreadTest.cpp:主程序
CThreadManager:线程管理Class,线程池的实现类
CThread:线程Class.
主程序实现方法。
1. 实现main函数和一个需要线程处理的业务函数(例子代码中业务函数是一个简单的计算函数Count)。在main函数中创建CThreadManager的实例,产生线程池。这个时候,把业务函数作为函数指针传到CThreadManager里面,最终会被线程调用。
2. 向工作队列中放入业务函数要处理的数据。
3. 设置信号量,唤醒线程。
代码
CThread::CThread(void* (*threadFuction)(void*),void* threadArgv)
{
// 初始化线程属性
pthread_attr_t threadAttr;
pthread_attr_init(&threadAttr);
pthread_create(&m_thread, &threadAttr, threadFuction, threadArgv);
}
程序的执行结果如下
sample代码可以从这里下载。
代码在windows的eclipse cdt + cygwin 平台上开发, 在Linux平台上测试通过。
1. 实现了线程池的概念,线程可以重复使用。
2. 对信号量,互斥锁等进行封装,业务处理函数中只需写和业务相关的代码。
3. 移植性好。如果想把这个线程池代码应用到自己的实现中去,只要写自己的业务处理函数和改写工作队列数据的处理方法就可以了。
Sample代码主要包括一个主程序和两个线程实现类
ThreadTest.cpp:主程序
CThreadManager:线程管理Class,线程池的实现类
CThread:线程Class.
主程序实现方法。
1. 实现main函数和一个需要线程处理的业务函数(例子代码中业务函数是一个简单的计算函数Count)。在main函数中创建CThreadManager的实例,产生线程池。这个时候,把业务函数作为函数指针传到CThreadManager里面,最终会被线程调用。
2. 向工作队列中放入业务函数要处理的数据。
3. 设置信号量,唤醒线程。
代码
CThread::CThread(void* (*threadFuction)(void*),void* threadArgv)
{
// 初始化线程属性
pthread_attr_t threadAttr;
pthread_attr_init(&threadAttr);
pthread_create(&m_thread, &threadAttr, threadFuction, threadArgv);
}
程序的执行结果如下
sample代码可以从这里下载。
代码在windows的eclipse cdt + cygwin 平台上开发, 在Linux平台上测试通过。
相关文章推荐
- linux 下c++线程池的简单实现(在老外代码上添加注释)
- 一个C++线程池的简单实现
- linux下c/c++实例之十三C实现的简单的线程池
- 【转载】实现一个简单的linux线程池
- linux下用C++代码实现简单的进度条
- 一个C++基于boost简单实现的线程池
- LINUX C++ 线程池简单实现之双队列
- linux下用c语言实现一个简单的线程池
- 200行C代码实现简单线程池【Linux】
- 一个linux下简单的纯C++实现Http请求类(GET,POST,上传,下载)
- Linux C++ 一个线程池的简单实现(附代码)
- 一个简单的线程池(c++版)
- 50行代码实现的一个最简单的基于 DirectShow 的视频播放器
- [简单题]换一个思维,代码简洁度就完全变了(Python实现)
- VS下用C++实现的简单3D射击游戏(附游戏文件与源工程代码)
- C++11 STL线程库实现一个简单的线程池
- 简单掌握桶排序算法及C++版的代码实现
- C++ 使用模版范式写一个单例模式的类--简单实现单例模式
- 一个简单的linux线程池(转-wangchenxicool)
- c++实现一个简单的空间配置器allocator