代码拉取完成,页面将自动刷新
同步操作将从 LEE377/线程池 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#pragma once
#include <thread>
#include <iostream>
#include <mutex>
#include <condition_variable>
#include <functional>
using namespace std;
class BaseThread
{
public:
enum RunningState
{
START = 0,
PAUSE,
WAIT,
STOP
};
BaseThread();
~BaseThread() = default;
// 开启线程
void ThreadStart();
// 暂停线程
void ThreadPause();
// 终止线程
void ThreadStop();
// 得到线程状态
RunningState GetRunningState();
// 添加任务
bool AddTask(function<bool()> func);
protected:
void Run();
// 执行任务,主要是任务队列中取任务和执行任务的操作
void TaskAction();
// 挂起等待
void WaitIfPaused();
private:
RunningState m_state; // 线程状态
unique_ptr<thread> m_thread; // 包裹智能指针的线程
function<bool()> execFunc; // 当前执行任务
mutex mtx; // 互斥量
condition_variable cond; // 主动暂停条件变量
condition_variable cond_taskEmpty; // 当前任务空变量
condition_variable cond_taskFull; // 当前任务满变量
};
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。