您的位置:首页 > 其它

windows系统调用 线程 启动与挂起

2014-06-11 10:48 295 查看
#include "iostream"
#include "windows.h"
using namespace std;

class CWorkerThread{
public:
CWorkerThread(LPCTSTR m_szName):m_szName(m_szName),m_hThread(INVALID_HANDLE_VALUE){
m_hThread=CreateThread(
NULL,
0,
ThreadProc,
reinterpret_cast<LPVOID>(this),
0,
NULL
);
}

virtual ~CWorkerThread(){CloseHandle(m_hThread);}

virtual void WaitForCompletion(){
WaitForSingleObject(m_hThread,INFINITE);
}

virtual void SetPriority(int nPriority){
SetThreadPriority(m_hThread,nPriority);
}

virtual void Suspend(){
SuspendThread(m_hThread);
}

virtual void Resume(){
ResumeThread(m_hThread);
}

protected:
static DWORD WINAPI ThreadProc(LPVOID lpParam){
CWorkerThread *pThis=
reinterpret_cast<CWorkerThread*>(lpParam);

pThis->DoStuff();
return (0);
}

virtual void DoStuff(){
for(int n=0;n<10;n++){
cout<<"Thread"<<m_szName<<"ID:"<<GetCurrentThreadId()<<",count"<<n<<endl;
}
}

protected:
HANDLE m_hThread;
LPCTSTR m_szName;
};

void main(){
CWorkerThread wtA("A");
CWorkerThread wtB("B");

wtA.SetPriority(THREAD_PRIORITY_LOWEST);

wtB.Suspend();

wtA.WaitForCompletion();
wtB.Resume();
wtB.WaitForCompletion();

cout<<"Both threads complete."<<endl;

getchar();
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: