⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 thread.h

📁 图象处理
💻 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 + -