简单的线程基类

原创 2006年05月18日 17:08:00

 

typedef unsigned (WINAPI *PTHREADFUN)(LPVOID lpParameter);

class CThread
{
public:
 CThread(void) {}
 ~CThread(void) {}

 void Start(void);
 void Stop(void) const { CloseHandle(m_hThread); }

 static DWORD WINAPI ThreadFun(LPVOID lpParameter);
 virtual DWORD WINAPI ThreadWorkItem(LPVOID lpParameter) = 0;

private:
 HANDLE m_hThread;
 DWORD m_dwThreadID;
};

inline void CThread::Start(void)
{
 m_hThread = reinterpret_cast<HANDLE>(_beginthreadex(NULL, NULL, (PTHREADFUN) ThreadFun, this, 0, (unsigned*) &m_dwThreadID));
 if (m_hThread == NULL)
 {
  throw Exception("Error: Start thread!");
 }
}

inline DWORD WINAPI CThread::ThreadFun(LPVOID lpParameter)
{
 CThread *pThread = reinterpret_cast<CThread*> (lpParameter);
 pThread->ThreadWorkItem(lpParameter);
 return 0;
}

只要继承上面的类,然后重写ThreadWorkItem(LPVOID)这个函数就可以了。

class test : public CThread
{
public:
 test(void) {}
 ~test(void) {}

 DWORD WINAPI ThreadWorkItem(LPVOID lpParameter){ cout<<"线程执行的操作"<<endl; }

};

 

 

相关文章推荐

vs2008 多重继承虚基类的简单应用

  • 2014年09月29日 17:12
  • 709KB
  • 下载

菜鸟学EXT之组件基类Component中的配置属性简单介绍

由于所有的组件都继承自Ext.Component,因此在这里我们列出组件基类Component中的配置属性简单介绍。Normal07.8 磅02falsefalsefalseEN-USZH-CNX-N...

虚基类的简单应用

#include #include using namespace std; //声明公共基类Person class Person { public: Person(string nam,c...

C++ 十一周上机作业-之-编程2(虚基类的简单使用) 东南大学 仪器科学与工程学院

//Figure_cpp #include using namespace std; #ifndef DOT_H #define DOT_H #include #include ...

第十二周(例题)——例题熟悉(虚基类的简单应用举例)

/* 02.02.*烟台大学计算机学院学生 03.03.*All right reserved. 04.04.*文件名称*烟台大学计算机学院学生 05.05.*All right reserv...

线程基类的设计示例代码

  • 2015年09月29日 18:40
  • 147KB
  • 下载

学习一个WinAPI实现的线程基类

这个基类通过调用WinAPI的方法,编写了一个可以管理线程的基类,功能和用法都很基础,但是对理解线程的工作很有帮助。 h文件:#include static DWORD WINAPI thread...
  • zzk1995
  • zzk1995
  • 2015年11月16日 00:49
  • 519

线程基类

每次创建线程相当麻烦,总是不记得一些参数和
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:简单的线程基类
举报原因:
原因补充:

(最多只允许输入30个字)