1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-08 11:38:21 +02:00
Beef/BeefySysLib/util/WorkThread.cpp

59 lines
861 B
C++

#include "WorkThread.h"
USING_NS_BF;
WorkThread::WorkThread()
{
mThread = NULL;
}
WorkThread::~WorkThread()
{
if (mThread != NULL)
Stop();
BfpThread_Release(mThread);
mThread = NULL;
}
static void BFP_CALLTYPE WorkThreadStub(void* param)
{
((WorkThread*)param)->Run();
}
void WorkThread::Start()
{
mThread = BfpThread_Create(WorkThreadStub, (void*)this, 256 * 1024, BfpThreadCreateFlag_StackSizeReserve);
}
void WorkThread::Stop()
{
WaitForFinish();
}
void WorkThread::WaitForFinish()
{
if (mThread == NULL)
return;
BfpThread_WaitFor(mThread, -1);
}
bool WorkThread::WaitForFinish(int waitMS)
{
if (BfpThread_WaitFor(mThread, waitMS))
return true;
return false;
}
void WorkThreadFunc::Start(void(*func)(void*), void* param)
{
mParam = param;
mFunc = func;
WorkThread::Start();
}
void WorkThreadFunc::Run()
{
mFunc(mParam);
}