#include <stdio.h>
#include <process.h>
#include <windows.h>
typedef unsigned (WINAPI *PBEGINTHREADEX_THREADFUNC)(LPVOID lpThreadParameter);
typedef unsigned *PBEGINTHREADEX_THREADID;
DWORD WINAPI ThreadFunc(LPVOID prarm);
class ThreadObject
{
public:
ThreadObject();
~ThreadObject();
bool StartThread(void);
bool WaitForExit(void);
virtual DWORD ThreadMemberFunc(void);
protected:
HANDLE m_handle;
DWORD m_ThreadID;
};
//构造函数
ThreadObject::ThreadObject()
{
m_handle=NULL;
m_ThreadID=NULL;
}
bool ThreadObject::StartThread( void )
{
m_handle=(HANDLE)_beginthreadex(NULL,NULL,(PBEGINTHREADEX_THREADFUNC)ThreadFunc,this,NULL,(PBEGINTHREADEX_THREADID)&m_ThreadID);
if (m_handle)
{
return true;
}
else
{
return false;
}
}
bool ThreadObject::WaitForExit( void )
{
WaitForSingleObject(m_handle,INFINITE);
CloseHandle(m_handle);
return true;
}
DWORD WINAPI ThreadFunc( LPVOID prarm )
{
ThreadObject* objthis=(ThreadObject*)prarm;
return objthis->ThreadMemberFunc();
}
DWORD ThreadObject::ThreadMemberFunc( void )
{
printf("基类线程执行中\n");
return true;
}
ThreadObject::~ThreadObject()
{
}
class B:public ThreadObject
{
public:
virtual DWORD ThreadMemberFunc(void);
};
DWORD B::ThreadMemberFunc( void )
{
printf("子类B的虚函数\n");
return true;
}
int main (void)
{
ThreadObject obj;
obj.StartThread();
obj.WaitForExit();
B b;
b.StartThread();
b.WaitForExit();
getchar();
return 0;
}
/*
2015年5月5日 22:36:38
程序执行结果:
基类线程执行中
子类B的虚函数
请按任意键继续. . .
*/
类中使用线程例子2
最新推荐文章于 2018-08-04 16:40:00 发布