2019-08-23 11:56:54 -07:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "../Common.h"
|
|
|
|
|
|
|
|
NS_BF_BEGIN
|
|
|
|
|
|
|
|
class WorkThread
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
BfpThread* mThread;
|
2020-08-10 14:45:29 -07:00
|
|
|
int mStackSize;
|
2019-08-23 11:56:54 -07:00
|
|
|
|
|
|
|
public:
|
|
|
|
WorkThread();
|
|
|
|
virtual ~WorkThread();
|
|
|
|
|
|
|
|
virtual void Start();
|
|
|
|
virtual void Stop();
|
|
|
|
virtual void WaitForFinish();
|
|
|
|
virtual bool WaitForFinish(int waitMS);
|
|
|
|
|
|
|
|
virtual void Run() = 0;
|
|
|
|
};
|
|
|
|
|
|
|
|
class WorkThreadFunc : public WorkThread
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
void (*mFunc)(void*);
|
2020-08-10 14:45:29 -07:00
|
|
|
void* mParam;
|
2019-08-23 11:56:54 -07:00
|
|
|
|
|
|
|
public:
|
|
|
|
// Note: this startProc signature does not match BfpThreadStartProc -- here we abstract out the calling convention to be default
|
|
|
|
// on all platforms (cdecl)
|
|
|
|
void Start(void (*func)(void*), void* param);
|
|
|
|
virtual void Run() override;
|
|
|
|
};
|
|
|
|
|
|
|
|
NS_BF_END
|