1 Star 0 Fork 1

行走的皮卡丘/线程池

forked from LEE377/线程池 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
BaseThread.h 999 Bytes
一键复制 编辑 原始数据 按行查看 历史
LEE377 提交于 2023-07-13 06:29 . 线程池文件
#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; // 当前任务满变量
};
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/wsy-lyy/thread-pool.git
git@gitee.com:wsy-lyy/thread-pool.git
wsy-lyy
thread-pool
线程池
master

搜索帮助