thread.h

来自「图象处理」· C头文件 代码 · 共 61 行

H
61
字号
// 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 + =
减小字号Ctrl + -
显示快捷键?