您的位置:首页 > 运维架构 > Linux

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平台上测试通过。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: