mirror of https://github.com/oxen-io/lokinet
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
656 B
C++
34 lines
656 B
C++
#ifndef LLARP_THREADPOOL_HPP
|
|
#define LLARP_THREADPOOL_HPP
|
|
|
|
#include <llarp/threadpool.h>
|
|
|
|
#include <condition_variable>
|
|
#include <deque>
|
|
#include <mutex>
|
|
#include <thread>
|
|
#include <vector>
|
|
|
|
namespace llarp {
|
|
namespace thread {
|
|
typedef std::mutex mtx_t;
|
|
typedef std::unique_lock<mtx_t> lock_t;
|
|
struct Pool {
|
|
Pool(size_t sz, const char * name);
|
|
void QueueJob(const llarp_thread_job& job);
|
|
void Join();
|
|
void Stop();
|
|
std::vector<std::thread> threads;
|
|
std::deque<llarp_thread_job> jobs;
|
|
|
|
mtx_t queue_mutex;
|
|
std::condition_variable condition;
|
|
std::condition_variable done;
|
|
bool stop;
|
|
};
|
|
|
|
} // namespace thread
|
|
} // namespace llarp
|
|
|
|
#endif
|