#ifndef SMXHelperThread_h
#define SMXHelperThread_h

#include "Helpers.h"
#include "SMXThread.h"

#include <functional>
#include <vector>
#include <memory>
using namespace std;

namespace SMX
{
class SMXHelperThread: public SMXThread
{
public:
    SMXHelperThread(const string &sThreadName);
   
    // Call func asynchronously from the helper thread.
    void RunInThread(function<void()> func);

private:
    void ThreadMain();

    // Helper threads use their independent lock.
    SMX::Mutex m_Lock;
    vector<function<void()>> m_FunctionsToCall;
};
}

#endif