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

📄 cthreadimp.h

📁 PGP8.0源码 请认真阅读您的文件包然后写出其具体功能
💻 H
字号:
/*____________________________________________________________________________
		Copyright (C) 2002 PGP Corporation
        All rights reserved.

        $Id: CThreadImp.h,v 1.3 2002/08/06 20:10:37 dallen Exp $
____________________________________________________________________________*/

#ifndef Included_CThreadImp_h	// [
#define Included_CThreadImp_h

#include "pgpClassesConfig.h"

#include "CImp.h"
#include "CLookasideList.h"
#include "CQueue.h"
#include "CSemaphore.h"
#include "CSpinLock.h"
#include "CThread.h"

_PGP_BEGIN

// Class CThreadImp

class CThreadImp : public CImp
{
	friend class CThread;

private:
	struct ThreadCallbackInfo;

public:
	~CThreadImp();

protected:
	CThreadImp();

	PGPBoolean	IsRunning() const {return mIsRunning;}

	SMART_ERROR	StartThread(PGPUInt32 maxQueuedRequests);
	void		KillThread();

	SMART_ERROR	PerformAsyncCallback(CThread::CallbackFunc callbackFunc, 
		void *refPtr);
	SMART_ERROR	PerformSyncCallback(CThread::CallbackFunc callbackFunc, 
		void *refPtr);

protected:
	CQueue<ThreadCallbackInfo>	mTaskQueue;
	CArray<ThreadCallbackInfo>	mTaskPool;

	CSpinLock	mTaskQueueLock;
	CSpinLock	mTaskPoolLock;
	CSemaphore	mExitSemaphore;
	CSemaphore	mTaskSemaphore;

	PGPBoolean	mIsRunning;
	PGPBoolean	mShouldWeExit;

	virtual SMART_ERROR	StartOsThread() = 0;

	ThreadCallbackInfo *	GetFromPool();
	void					ReleaseToPool(ThreadCallbackInfo *pTCI);

	PGPBoolean	MainThreadLoop();
};

_PGP_END

#endif	// ] Included_CThreadImp_h

⌨️ 快捷键说明

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