📄 threadpool.h
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -