Files
CodeRepository/Apps/App_GeneralDataInjectionApp/Common/thread.cpp
chenzhen 222dda1e43 1,新增“App_ThermalImageSystem”;
2,新增“Apps”;
3,新增“Common”;
4,新增“FileList”;
5,新增“MediaX”;
6,新增“OpenSource”;
7,新增“Samples”;
8,新增“SoftwareBusinessLines”.
2026-02-14 23:03:23 +08:00

51 lines
1021 B
C++

#include "thread.h"
#include <Windows.h>
#include <assert.h>
#include <process.h>
//volatile unsigned int Thread::numCreated_ = 0;
volatile LONG Thread::numCreated_ = 0;
Thread::Thread(void* pthis,const ThreadFunc& func, const std::string& name)
: pThis_(pthis), started_(false), threadId_(0), func_(func), name_(name)
{
InterlockedIncrement(&numCreated_);
}
Thread::~Thread()
{
}
void Thread::start()
{
assert(!started_);
started_ = true;
threadId_ = _beginthreadex(NULL, 0, startThread, this, 0, NULL);
if (0 == threadId_)
{
// OutputDebugString(L"create thread fail");
}
else
{
// OutputDebugString(L"create thread success");
}
}
void Thread::join()
{
assert(started_);
started_ = false;
WaitForSingleObject((HANDLE)threadId_, INFINITE);
}
unsigned int Thread::startThread(void *obj)
{
Thread *thread = static_cast<Thread*>(obj);
thread->runInThread();
return 0;
}
void Thread::runInThread()
{
if (func_) { func_(pThis_); }
}