📄 thread.h
字号:
// Thread.h: interface for the CThread class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_THREAD_H__3AA11CA1_8FD0_424F_B8FA_74EEB361996F__INCLUDED_)
#define AFX_THREAD_H__3AA11CA1_8FD0_424F_B8FA_74EEB361996F__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <windows.h>
/////////////////////////////////////////////////////////////////////////////////
// CThread类,封装对线程的操作,屏蔽起在Windows和Unix平台的差别
//
class CThread
{
public:
CThread();
virtual ~CThread();
//等待线程结束或者超过dwWaitTime时间
bool Wait(unsigned long dwWaitTime=INFINITE)
{
return (WAIT_OBJECT_0==WaitForSingleObject(m_hThread, dwWaitTime));
}
//停止线程,这并不是一个粗野的停止
//也就是说它只是设定停止标志,然后就等待Run的停止
//然后等待dwWaitTime时间后返回,dwWaitTime在Unix平台被忽略
//所以Stop函数依赖于用户Run的实现,即它会在什么时候检查停止标志并退出
//如果停止成功,返回真,否则返回假
bool Stop(unsigned long dwWaitTime=INFINITE)
{
if (false==bRunning) return true;
bRunning = false;
return Wait(dwWaitTime);
}
//检查线程是否正在工作
bool IsRunning(void){ return bRunning;}
//线程启动方法,启动线程之后立即返回
void Start(void);
protected:
//Run方法必须被继承重载
//用户具体想实现的逻辑应放在这里
virtual void Run()=0;
protected:
//ThreadAction
static DWORD WINAPI ThreadAction(LPVOID);
protected:
//m_hThread是线程句柄
HANDLE m_hThread;
bool bRunning;
};
#endif // !defined(AFX_THREAD_H__3AA11CA1_8FD0_424F_B8FA_74EEB361996F__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -