多线程管理类

豆豆网   技术应用频道   2008年01月14日    社区交流

内容摘要:如果用AfxBeginThread,那必须定个全局函数,或者写个静态函数,一般是传个this指针进去,然后再用这个指针调用本类函数的成员函数,用起来比较麻烦,现在问题是能不能不用全局或者静态函数来实现呢,于是我实现了这个类,来所简化多线程的创建和关闭的操作。

  本文示例源代码或素材下载

  由于最近经常搞些跟线程有关的东西,感觉多线程确实麻烦,线程间要处理好同步与通讯,如果用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);
};      

  一、这里先说一下这个类的使用方法

来源:vckbase    作者:谭永光    责编:豆豆技术应用

正在加载评论...