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

📄 template.h

📁 软件源代码,共享。有2个文件
💻 H
字号:

namespace  ThreadTemplate
{
	template<class C, class R>
	class bind1
	{
		C* __m_pThis_;
		typedef R (C::* _callfn_)();
		_callfn_ __m_callfn_;
		
	public:
		bind1(C* pThis, _callfn_ fn)
		{
			__m_pThis_ = pThis;
			__m_callfn_ = fn;
		}
		R Run()
		{
			return ((*__m_pThis_).*(__m_callfn_))();
		}
	};

	template<class C, class R, class P>
	class bind2
	{
		C* __m_pThis_;
		typedef R (C::* _callfn_)(P);
		_callfn_ __m_callfn_;
		P ____m_p;
	public:
		bind2(C* pThis, _callfn_ fn, P p)
		{
			____m_p = p;
			__m_pThis_ = pThis;
			__m_callfn_ = fn;
		}
		R Run()
		{
			return ((*__m_pThis_).*(__m_callfn_))(____m_p);
		}
	};

	template<class C, class R, class P, class P2>
	class bind3
	{
		C* __m_pThis_;
		typedef R (C::* _callfn_)(P, P2);
		_callfn_ __m_callfn_;
		P  ____m_p1;
		P2 ____m_p2;
	public:
		bind3(C* pThis, _callfn_ fn, P p1, P2 p2)
		{
			____m_p1 = p1;
			____m_p2 = p2;
			__m_pThis_ = pThis;
			__m_callfn_ = fn;
		}
		R Run()
		{
			return ((*__m_pThis_).*(__m_callfn_))(____m_p1, ____m_p2);
		}
	};

	template<class C, class R>
	class __Thread__
	{
	public:
		static DWORD WINAPI Thread(LPVOID lp)
		{
			typedef bind1<C, R> bind;
			bind* pThis = (bind*)lp;
			pThis->Run();
			delete pThis;
			return 0;
		}
	};

	template<class C, class R, class P>
	class __Thread2__
	{
	public:
		static DWORD WINAPI Thread(LPVOID lp)
		{
			typedef bind2<C, R, P> bind;
			bind* pThis = (bind*)lp;
			pThis->Run();
			delete pThis;
			return 0;
		}
	};
	

	template<class C, class R>
	bool StartThread(C* pThis, R (C::* pfn)())
	{
		bind1<C, R>* pbin = new bind1<C, R>(pThis,pfn);
		return CreateThread(0, 0, __Thread__<C, R>::Thread,pbin,0, 0)  != NULL;
	}

	template<class C, class R>
	bool StartThread(C* pThis, R (C::* pfn)(LPVOID), LPVOID lp)
	{
		bind2<C, R,LPVOID>* pbin = new bind2<C, R, LPVOID>(pThis,pfn, lp);
		return CreateThread(0, 0, __Thread2__<C, R, LPVOID>::Thread,pbin,0, 0)  != NULL;
	}
}//end namespace 


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -