Welcome

首页 / 软件开发 / C++ / 多线程管理类

多线程管理类2010-09-04 vckbase 谭永光由于最近经常搞些跟线程有关的东西,感觉多线程确实麻烦,线程间要处理好同步与通讯,如果用CWinThread好一点,直接是一个线程对象,如果用AfxBeginThread,那必须定个全局函数,或者写个静态函数,一般是传个this指针进去,然后再用这个指针调用本类函数的成员函数,用起来比较麻烦,现在问题是能不能不用全局或者静态函数来实现呢,于是我实现了这个类,来所简化多线程的创建和关闭的操作。

现在简要看一下类的数据和成员函数

template<class T>
class CYGMulThread
{
protected:
typedef void (T::* _pThreadFunc)(void );
static _pThreadFunc ThreadFunc;
static BOOL s_IsBreaking; //用以判断线程是否要中断
static CWaitDlg s_Waitdlg;//等待对话框
//内部线程
static UINT ThreadProc(LPVOID lpParam);
public:
//在线程内部使用,用以判断有没有要结束的信号
static BOOL IsBreakThread() ;
//----------------------------非静态
protected:
CYGMulThread();
virtual ~CYGMulThread();
CWinThread **m_pThread;//线程数组指针
int m_nThreadCount;
//处理windows的消息
void PeekMessageLoop();
public:
int GetThreadCount() const ;
//pFunc=输入一个void f(void)的成员函数,nThreadCount=线程数目
void YGBeginFuncThread(_pThreadFunc pFunc,int nThreadCount);
//结束线程时调用
bool EndAllThread(const char *szMsg);
};