diff options
Diffstat (limited to 'include/threadpool.h')
-rw-r--r-- | include/threadpool.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/include/threadpool.h b/include/threadpool.h new file mode 100644 index 0000000..c341673 --- /dev/null +++ b/include/threadpool.h @@ -0,0 +1,53 @@ +#ifndef THREADPOOL_H +#define THREADPOOL_H + +#include <vector> +#include <queue> +#include <thread> +#include <mutex> +#include <condition_variable> +#include <iostream> +#include <unistd.h> + +using namespace std; + +class ThreadPool +{ +public: + + // Constructor. + ThreadPool(int threads); + + // Destructor. + ~ThreadPool(); + + // Adds task to a task queue. + void Enqueue(function<void()> f); + + // Shut down the pool. + void ShutDown(); + +private: + // Thread pool storage. + vector<thread> threadPool; + + // Queue to keep track of incoming tasks. + queue<function<void()>> tasks; + + // Task queue mutex. + mutex tasksMutex; + + // Condition variable. + condition_variable condition; + + // Indicates that pool needs to be shut down. + bool terminate; + + // Indicates that pool has been terminated. + bool stopped; + + // Function that will be invoked by our threads. + void Invoke(); +}; + +#endif //THRE
\ No newline at end of file |