CppExperiments/ThreadPool/ThreadPool.h

31 lines
597 B
C
Raw Permalink Normal View History

2021-10-21 13:00:01 +00:00
#ifndef THREADPOOL_H
#define THREADPOOL_H
#include <thread>
#include <functional>
#include <condition_variable>
#include <atomic>
#include <list>
#include <queue>
#include <mutex>
#include <memory>
class ThreadPool {
private:
std::queue<std::function<void()>> jobs;
std::list<std::unique_ptr<std::thread>> thread_list;
std::atomic<bool> quit_signal;
std::mutex add_lock;
std::condition_variable cvar_signal;
void worker();
public:
ThreadPool(int thread_number);
~ThreadPool();
void addJob(std::function<void()> job);
};
#endif // THREADPOOL_H