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 + -
显示快捷键?