#ifndef DDS_THREADMGR_H
#define DDS_THREADMGR_H
#include <string>
#include <vector>
using namespace std;
class ThreadMgr
{
private:
vector<bool> realThreads;
vector<int> machineThreads;
unsigned numRealThreads;
unsigned numMachineThreads;
ThreadMgr() : numRealThreads(0), numMachineThreads(0) {}
ThreadMgr(const ThreadMgr&) = delete;
ThreadMgr& operator=(const ThreadMgr&) = delete;
static ThreadMgr single_instance;
public:
~ThreadMgr();
static ThreadMgr& instance() {
return single_instance;
};
void Reset(const int nThreads);
int Occupy(const int MachineThrId);
bool Release(const int MachineThrId);
void Print(
const string& fname,
const string& tag) const;
};
#endif