这里简单实现了一个线程基类,其中未包括线程关闭的方法,等待后续添加。
XThread.h
#pragma once
#include <thread>
class XThread
{
public:
XThread() = default;
virtual ~XThread() = default;
public:
virtual void Run() = 0; // 必须被子类实现,本身不能被实例化
public:
void Start(); // 线程启动函数
private:
static void ThreadFunc(XThread* pXThread); // 线程函数
private:
std::thread m_thread; // 线程实体
};
XThread.cpp
#include "XThread.h"
#include <iostream>
void XThread::Start()
{
// 移动赋值
m_thread = std::thread(ThreadFunc, this);
}
void XThread::ThreadFunc(XThread* pXThread)
{
// 这里必须要传一个XThread的指针
// 因为不能直接调用XThread::Run()
if (nullptr == pXThread) return;
pXThread->Run();
}