C++ :线程的暂停、恢复和停止
转载:C++11: 线程的暂停和继续和停止_hai7song的专栏-CSDN博客_c++ 线程暂停
重点:
通过设置一个类,类里面加入线程,然后采用标志位来控线程的暂停、恢复和停止。
有点意思!
#include <future>
#include <initializer_list>
#include <type_traits>
#include <ctime>
#include <atomic>
using namespace std;class ThreadTest
{
public:ThreadTest()=default;~ThreadTest() = default;public:void Run();void Stop();void Pause(); //暂停void Resume();//恢复
private:condition_variable m_cv;mutex mu;bool m_isStop{false};bool m_isPause{ false };atomic<int> num = 0;
};
void ThreadTest::Run()
{thread t([&] {while (true){if (!m_isStop){cout << "current process is" << num++ << endl;this_thread::sleep_for(chrono::seconds(1));unique_lock<mutex> lock(mu);m_cv.wait(lock, [this] {return !m_isPause; });}}});t.detach();
}
void ThreadTest::Stop()
{m_isStop = true;
}
void ThreadTest::Pause()
{unique_lock<mutex> lock(mu);m_isPause = true;m_cv.notify_one();
}
void ThreadTest::Resume()
{unique_lock<mutex> lock(mu);m_isPause = false;m_cv.notify_one();
}int main()
{ThreadTest t;t.Run();int ch;while ((ch=getchar())!='q'){switch (ch){case 'p':t.Pause();break;case 'r':t.Resume();break;case 's':t.Stop();break;default:break;}}return 0;
}
C++ :线程的暂停、恢复和停止相关推荐
- python 实现线程的暂停, 恢复, 退出详解及实例
Python中可以是threading模块实现多线程, 但是模块并没有提供暂停, 恢复和停止线程的方法, 一旦线程对象调用start方法后, 只能等到对应的方法函数运行完毕. 也就是说一旦start后 ...
- Qt之线程的开始暂停恢复停止
一.前言 软件开发中,使用到线程就不可避免的要实现线程的暂停恢复停止等操作,总不可能说线程一旦启动就直接运行到结束了,中途不能停止啥的.线程的开始以及结束都比较简单,都有对应的接口可以调用,线程的暂停 ...
- python暂停和恢复_python-线程的暂停, 恢复, 退出
我们都知道python中可以是threading模块实现多线程, 但是模块并没有提供暂停, 恢复和停止线程的方法, 一旦线程对象调用start方法后, 只能等到对应的方法函数运行完毕. 也就是说一旦s ...
- Python关于Threading暂停恢复解决办法
我们都知道python中可以是threading模块实现多线程, 但是模块并没有提供暂停, 恢复和停止线程的方法, 一旦线程对象调用start方法后, 只能等到对应的方法函数运行完毕. 也就是说一旦s ...
- python下载文件暂停恢复_Python关于Threading暂停恢复解决办法
我们都知道python中可以是threading模块实现多线程, 但是模块并没有提供暂停, 恢复和停止线程的方法, 一旦线程对象调用start方法后, 只能等到对应的方法函数运行完毕. 也就是说一旦s ...
- java线程的停止,暂停,恢复*
暂停.恢复和停止操作对应在线程Thread的API就是suspend().resume()和stop().但是这些API是过期的,也就是不建议使用的.不建议使用的原因主要有: 以suspend()方法 ...
- c#语言窗体运行暂停指令,C#线程启动、暂停、恢复、停止怎么实现
论坛的高手你们好,本人是一个菜鸟,肯请大家帮个忙实现如下功能: 首先窗体界面如下: 怎么实现"start"启动线程."pause"暂停线程."resu ...
- 潇洒郎: python threading 实现线程暂停、恢复、停止功能
结果: 线程暂停.恢复.停止见注释 obj-T1-0obj-T2-0main 0obj-T1-1obj-T2-1obj-T2-2main 1obj-T1-2obj-T1-3obj-T2-3main 2 ...
- Qt实用技巧:使用OpenCV库的视频播放器(支持播放器操作,如暂停、恢复、停止、时间、进度条拽托等...
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 需求 使用OpenCV库的视频播放器(支持播放器操作,如暂停.恢复 ...
最新文章
- apche 虚拟主机设置
- python编程语言创始人-Python简史:开发者的小小副业如何成为全球最热编程语言?...
- 在二叉树中找到累加和为指定值的最长路径长度
- java在线学习系统源码_Java在线考试系统源码
- 谷歌大脑Wasserstein自编码器:新一代生成模型算法
- 【Qt】Qt中的快捷键汇总
- X265-线程池-1
- python读取日志统计ip_如何通过命令行统计和排列访问日志里的ip数
- wso2 esb_使用WSO2 ESB进行邮件内容过滤
- linux嵌入式开发流程,听听牛人怎么说
- 蓝桥杯 算法提高 日期计算
- 华为机试——计算字符个数
- 统计mysql里每条SQL语句执行的时间
- 火眼公司发布公开漏洞奖励计划
- 如何卸载密码保护的Symantec Endpoint Protection
- 用python画猫咪怎么画-python画猫
- python数据挖掘-oneR算法
- C语言系列:6、结构
- 【OpenGL】(step1)开个窗口
- python读取身份证中的生日信息