mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-08 11:38:21 +02:00
59 lines
861 B
C++
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);
|
|
}
|