08/05/21 17:42:31
class Thread {
HANDLE hthread_;
unsigned int id_;
void run(void) { /* 具体的な処理 */ }
public:
void start(void) { hthread_ = (HANDLE)_beginthreadex(NULL, 0, Thread::entrypoint, this, 0, &id_); }
DWORD suspend(void) const { return SuspendThread(handle()); }
DWORD resume(void) const { return ResumeThread(handle())); }
static unsigned int WINAPI entrypoint(void* instance) {
thread_t* p = static_cast<thread_t*>(instance);
p->run();
_endthreadex(0);
CloseHandle(p->handle());
p->hthread_ = 0;
return 0;
}
};