threadpool.h

来自「BQYAHOO的Visual C++源代码」· C头文件 代码 · 共 63 行

H
63
字号
#pragma once


#include <list>
#include <windows.h>
#include <string>
using namespace std;


/* Asynchronized Queue */
template <class T>
class AsynchQueue {
public:
	AsynchQueue();
	~AsynchQueue();

	void Enqueue(T* data);
	T* Dequeue();

private:
	std::list<T*> queue;
	HANDLE hMutex;
	HANDLE hEvent;

	AsynchQueue(const AsynchQueue<T>& q);
	AsynchQueue &operator=(const AsynchQueue<T>&);
};






/* Job that passed to the thread */
class Job {
public:
	virtual void Process() = 0;
	virtual ~Job() {};
};

/* Thread Pool */
class ThreadPool {
public:
	ThreadPool(int num, BOOL releaseJob);
	~ThreadPool();
	void Assignment(Job *job);
	void Work();
	BOOL IsStopping();

private:
	ThreadPool(const ThreadPool &);
	ThreadPool &operator=(const ThreadPool &);

	int m_iThread;
	AsynchQueue<Job> queue;
	std::list<HANDLE> threads;
	HANDLE hMutex;
	BOOL stopMe;
	BOOL m_releaseJob;
};


⌨️ 快捷键说明

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