WEB开发网
开发学院软件开发VC 多线程管理类 阅读

多线程管理类

 2010-09-04 20:48:19 来源:WEB开发网   
核心提示:由于最近经常搞些跟线程有关的东西,感觉多线程确实麻烦,多线程管理类,线程间要处理好同步与通讯,如果用CWinThread好一点,于是我实现了这个类,来所简化多线程的创建和关闭的操作,直接是一个线程对象,如果用AfxBeginThread

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

1 2 3 4  下一页

Tags:线程 管理

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接