编写程序准备知识
(1)pthread_mutex_t CThreadPool::m_pthreadMutex = PTHREAD_MUTEX_INITIALIZER;(互斥锁初始化)
(2)pthread_cond_t CThreadPool::m_pthreadCond = PTHREAD_COND_INITIALIZER;(条件锁初始化)
(3) pthread_mutex_lock(&m_pthreadMutex);(加锁)
(4)pthread_mutex_unlock(&m_pthreadMutex);(解锁)
(5)pthread_cond_signal(&m_pthreadCond);(发送条件锁信号)
(6)pthread_cond_broadcast(&m_pthreadCond);(广播条件锁信号)
(7)pthread_mutex_destroy(&m_pthreadMutex);(销毁锁)
(8)pthread_cond_destroy(&m_pthreadCond);(销毁条件锁)
编写头文件
thread_pool.h文件
#ifndef __THREAD_POOL_H
#define __THREAD_POOL_H
#include <vector>
#include <string>
#include <pthread.h>
using namespace std;
/*执行任务的类:设置任务数据并执行*/
class CTask {
protected:
string m_strTaskName; //任务的名称
void* m_ptrData; //要执行的任务的具体数据
public:
CTask() = default;
CTask(string &taskName)
: m_strTaskName(taskName)
, m_ptrData(NULL) {
}
virtual int Run() = 0;
void setData(void* data); //设置任务数据
virtual ~CTask() {
}
};
/*线程池管理类*/
class CThreadPool {
private:
static vector<CTask*> m_vecTaskList; //任务列表
static bool shutdown; //线程退出标志
int m_iThreadNum; //线程池中启动的线程数
pthread_t *pthread_id;
static pthread_mutex_t m_pthreadMutex; //线程同步锁
static pthread_cond_t m_pthreadCond; //线程同步条件变量
protected

本文展示了如何在C++中使用pthread库创建线程池,包括线程同步的互斥锁和条件变量的使用,以及任务的添加、执行和线程的管理。线程池通过互斥锁保证对任务列表的访问安全,条件变量用于线程间的通信,通知有新的任务可执行。
最低0.47元/天 解锁文章
312

被折叠的 条评论
为什么被折叠?



