zthread学习 实例四 让步、休眠、优先级

ZThread多线程库学习笔记整理二 通过第一阶段的工程部署,多线程管理库ZThread.lib和ZThread.dll已经生成,不过为了更好的使用该库和弄懂该库的实现机制,我们可能需要生成该库的帮助文档,在Linux下,大家可以参考相关的Makefile文件,利用make工具即可很好的生成该doc目录下的html格式的帮助文档,但是需要部署工具doxygen,因为整个文档的注释都是以该工具的语法格式生成的。 doxygen工具的下 阅读详情

1、让步

Thread::yield()可以介入CPU的调度,使CPU强制放弃执行当前线程。

 

2、休眠

Thread:sleep()可以使线程停止执行一段时间。

Thread:sleep()可发抛出一个Interrupted_Exception,该异常必须在run()函数中捕获,因为异常是不会跨线程传播的,只能在线程内部处理。

 

3、优先级

Thread::setPriority()、Thread::getPriority(),可以人为的改变到线程执行的优先级,确保紧急的任务先执行。

实例如下:

[cpp]  view plain copy
  1. #include "stdafx.h"  
  2. #include <iostream>  
  3. #include <fstream>  
  4. #include "zthread/Runnable.h"  
  5. #include "zthread/Thread.h"  
  6. #include "zthread/PoolExecutor.h"    
  7. using namespace ZThread;  
  8. using namespace std;  
  9. const double pi = 3.141592653589793;  
  10. const double e = 2.718281828459;  
  11. class SimplePriorities : public Runnable  
  12. {  
  13. public:  
  14.     SimplePriorities(int idn = 0): id(idn), nCountDown(5){}  
  15.     ~SimplePriorities(){}  
  16.     friend ostream& operator << (ostream& os, const SimplePriorities& sp)  
  17.     {  
  18.         return os << "#" << sp.id << "  priority : " <<Thread().getPriority() << "count : " << sp.nCountDown <<endl;  
  19.     }  
  20.     void run()  
  21.     {  
  22.         while (true)  
  23.         {  
  24.             for (int i = 0; i < 10000; i++)  
  25.             {  
  26.                 d = d + (pi + e) /double(i);  
  27.             }  
  28.             cout << *this <<endl;  
  29.             if (--nCountDown == 0)  return;  
  30.         }  
  31.     }  
  32. private:  
  33.     int nCountDown;  
  34.     int id;  
  35.     volatile double d;  
  36. };  
  37.   
  38. int _tmain(int argc, _TCHAR* argv[])  
  39. {  
  40.     try  
  41.     {  
  42.         Thread high(new SimplePriorities);  
  43.         high.setPriority(Priority::High);  
  44.         for (int i = 1; i < 5; i++)  
  45.         {  
  46.             Thread low(new SimplePriorities(i));  
  47.             low.setPriority(Priority::Low);  
  48.         }  
  49.         cin.get();  
  50.     }  
  51.     catch (Synchronization_Exception&  e)  
  52.     {  
  53.         cerr << e.what() <<endl;  
  54.     }  
  55.     cin.get();  
  56.     return 0;  
  57. }  

 

 

zthread线程库 zthread线程库提供了各种线程、线程池、队列、各种锁的支持,还能跨平台哦。 立即下载

相关推荐

zthread2.3.2 代码和lib

zthread2.3.2 代码 lib zthread2.3.2 代码 lib

zthread库类型总结 .

Runnable            //执行任务的接口     Cancelable          //可取消任务接口     Waitable            //任务可阻塞等待接口     Thread              //线程类     ThreadedExecutor    //线程执行器,为每个Runnable任务创建一个线程     PoolExe

516

ZThread源文件及Window下编译生成的文件

ZThread的最新源文件及自己编译生成的静态库文件,动态库文件,可以直接用来进行C++的并发编程,也可以自己编译,Windows及Linux的编译方法见http://blog.youkuaiyun.com/lanbing510/article/details/8441258

IBM的ZThread库

下载地址去除调试信息:在Debug.h中的最前端增加#define ZTDEBUG(x),忽略警告,DONE这个库用起来应该比Linux系统下提供的并发的借口要来的舒坦,不知道有没有TBB快速,但是可以肯定的是为程序员省掉了很多代码的编辑工作。Mark一下,认真学习之。当需要使用多线程库的时候,需要从Runnable共有继承产生一个类,然后重新定义run()函数代码如下:#include #include "zthread/Runnable.h" #include "zthread/Thread.h"

hitrose27的专栏 3222

Windows系统监控实战:Grafana+Prometheus+node_exporter保姆级配置指南(含常见问题解决)

本文提供了一份详尽的Windows系统监控实战指南,详细讲解了如何从零部署Grafana、Prometheus和node_exporter(实际为windows_exporter)监控栈。内容涵盖核心组件认知、分步配置解析、高级生产环境考量,并重点针对配置过程中常见的“No Data”问题提供了系统性的排查手册,旨在帮助用户快速搭建稳定可靠的系统资源监控平台。

weixin_29197835的博客 1008

抖音视频数据获取实战:从API调用到热门内容挖掘

通过抖音API获取视频数据,企业可快速构建数据驱动的运营体系。本文提供了从权限申请到商业落地的全流程指南,建议结合自身业务扩展功能。如有技术问题,欢迎​​评论​​区留言讨论!#抖音开发 #数据挖掘 #短视频运营 #API调用 #Python实战。

WBKJ_Noah_的博客 6397

zthread的简单使用

#include "stdafx.h" #include #include "zthread/PoolExecutor.h" #include "zthread/ThreadedExecutor.h" #include "zthread/ConcurrentExecutor.h" #include "zthread/SynchronousExecutor.h" #include "z

c1s2d3n4cs的博客 315

OpenClaw 完整命令文档(2026.3.13 最新版)

本文档为OpenClaw 2026.3.13通用版使用指南,包含核心命令大全。主要内容包括:1)基础安装/升级/卸载命令;2)ClawHub扩展安装命令(支持飞书/钉钉/企微等平台连接);3)Skills技能安装命令(实现聊天/搜索/记忆等功能);4)飞书机器人授权与配对命令;5)启动运行与配置检查命令;6)工作区与记忆管理命令;7)插件安全设置命令;8)调试日志命令;9)飞书机器人一键部署简化流程。文档特别强调飞书机器人部署需feishu扩展+对应技能+用户授权的完整配置,所有命令均需在终端执行,安装后需

MKliudan的专栏 1293

zthread学习 实例四 让步、休眠、优先级

1、让步 Thread::yield()可以介入CPU的调度,使CPU强制放弃执行当前线程。 2、休眠 Thread:sleep()可以使线程停止执行一段时间。 Thread:sleep()可发抛出一个Interrupted_Exception,该异常必须在run()函数中捕获,因为异常是不会跨线程传播的,只能在线程内部处理。 3、优先级 Thread::setPriority()、Thread::getPriority(),可以人为的改变到线程执行的优先

Jarry's World 2304

普冉PY32F003定时器实战:从HSE时钟配置到500ms精准闪烁LED(附完整代码)

本文详细解析了普冉PY32F003单片机定时器的实战应用,从HSE时钟配置到实现500ms精准LED闪烁。通过完整的代码示例和深入的技术分析,帮助开发者掌握定时器参数计算、中断优先级管理及调试技巧,适用于各类嵌入式开发项目。

weixin_30608503的博客 451

天爱验证码wasm验证码逆向

本文分析了某网站采用WASM加密技术的情况,发现其加密方式主要针对data和轨迹信息,整体加密逻辑变化不大。通过反混淆技术可以还原代码,并确认加密过程分为两步:先对原始参数逐个加密,再调用WASM模块进行最终加密。研究发现关键参数drives和ki都存储在WASM模块内,通过提取wasm_exec.js文件即可直接使用该加密功能。本文仅提供技术研究思路,强调严禁用于任何违法行为。

码王吴彦祖的博客 934

跨平台线程库 ZThread入门

 由于要用到多线程技术,之前用过windows API,但那是windows平台的。想试一下跨平台的,网上说boost有线程库,但那是个庞然大物,编译麻烦。无意中看见Zthread,这个小巧玲珑, sourceforge就有源码下载。第一次运行就成功了,好神奇啊! 小例子:   #include &lt;iostream&gt; #include &lt;zthread/Runnable....

westice的专栏 530

LDRA Testbed(TBrun)软件单元测试_实例讲解(对多次调用的函数打桩)

在之前的文章《LDRA Testbed(TBrun)软件单元测试_操作指南》中,已经讲解了如何使用TBrun进行软件单元测试的基本操作步骤。本篇文章将结合实例进一步讲解被测函数中包含多次调用其他函数时,如何对其打桩来实现测试目的(详细的操作流程本文不再重述,若有不清楚的,可以结合之前的操作指南一起来看)。本文以一个被测函数作为示例,讲解了如何使用Testbed(TBrun)对涉及到多次调用其他函数的被测函数进行单元测试。本文的示例可能比较简单,但是思路、方法和流程都是通用的,希望对大家有所帮助。

文章主要涉及嵌入式软件开发、测试、项目管理等,欢迎交流,共同进步。 1462

zthread学习 实例十二 ZThread库基本结构的规纳

 1、四大基类 CancelableCancelable提供了通用的方法来定义语义,调用了cancel()的Cancelable对象,将被置为disable。调用过cancel()ed的对象不必立即中止工作。通常被cancel()ed的对象尽可能快的继续执行完当前分配给它的工作,然后再变得不可用;但它不能接受任何新分配给它的工作。cancel()函数:使一个Cancelab

Jarry's World 2769

Python 领域 vllm 知识蒸馏的实践经验

知识蒸馏(Knowledge Distillation)是一种将大型、复杂模型(教师模型)的知识转移到小型、高效模型(学生模型)的技术。在大型语言模型(LLM)时代,这项技术变得尤为重要,因为它可以在保持模型性能的同时显著降低计算资源需求。本文专注于在Python生态中使用vLLM(Very Large Language Model)框架实现知识蒸馏的实践经验。vLLM是一个专为大型语言模型设计的高效推理和服务框架,它通过创新的注意力机制和内存管理技术,显著提高了LLM的推理速度。

AI Python 编程之道的博客 777

【原创教程】汇川H5U入门教案第二课

定时器指令IN输入能流从OFF变为ON时,定时器启动计时,输出Q为ON,IN输入能流从ON变为OFF时,在IN保持为OFF期间,定时器的运行时间是PT参数指定的时间,定时器定时时间达到PT参数指定的时间后,Q变为OFF。IN输入能流为ON时,ET输出值为0,IN从ON变为OFF时,在定时器计时运行期间,ET输出当前的计时时间,定时器计时时间到达PT参数指定的时间后,ET值保持。IN输入能流为ON时,在定时器计时运行期间,ET输出当前的计时时间,定时器计时时间到达PT参数指定的时间后,ET值保持;

Qinmingyue13的博客 2480

windows平台下编译zThread库

今天看到《c++编程思想》中并发一章,作者使用zThread这个开源库来讲解,于是我也下了个版本编译,并简单使用了下,以下是具体步骤:  一、创建工程       1.下载源码        由于官网http://zthread.sourceforge.net一直上不去,所以我从http://download.chinaunix.net/download.php?id=24079&Resou

sunchenx的专栏 2211

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

ZThread库试用小记

  昨天刚down了个ZThread,这个库主要用来开发c++的多线程应用。  那么我写的demo是使用windows平台下的dev-c++来做的,如果你用dev-c++,那么首先有1个问题要解决:http://blog.youkuaiyun.com/jimmy_w/archive/2007/12/24/1965313.aspx这里有解释为什么模板化基类里的名称不能被查到,以及怎么解决。编译好之后,在项目中可

Jimmy's Blog 1346

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Qt中的线程与信号槽

mainwindow.h zthread.h main.cpp mainwindow.cpp zthread.cpp 界面:运行结果:】我好像明白了点,我确实语法错了。之前关联信号与槽的时候,明明是不同的两个类,我却在connect前边加上了一个类域,这是其一;信号函数没有函数体定义,不能在.cpp文件中实现,但是我却实现了,还加了类域没想到 重定义 三个字放到信号signals这里是这样的情况,我粗略地以为只是函数、变量对象等的“重定义、” connect(m_pThtread,&

优快云_YJX的博客 543

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

ZThread多线程库学习笔记整理三

对于该库的学习和文档资料的整理,我个人把握的主线是以程序实践作为基础,在程序实践的基础上对相关的实现代码进行学习,明确整个库的基本架构层次,学习库的架构设计和库中涉及到的设计思想,以此来提高自己程序结构设计的能力和在代码实现时的设计模式的运用技能。 为了方便对库进行跟踪与调试,我决定在自己部署的ZThread的解决方案中建立两个工程,一个是库生成的工程,一个是test工程,主要是为了测试ZThr

追寻自己 928

zthread学习 实例十三 线程间的协助(四)——读者、写者

对于读写问题,ZThread库专门封装了类(ReadWriteLock)来控制读写: FairReadWriteLock (按FIFO的顺序进行读写控制):   A FairReadWriteLock maintains a balance between the order read-only access and read-write access is allowed.

fengliping的专栏 571

zthread学习 实例九 任务终止(二)——中断方式

终止一个阻塞线程和终止一个非阻塞线程的方式

Jarry's World 2527

ZThread库学习笔记(一) Time类的使用

Time类提供了访问相对于程序启动的时间值.换句话说, 这个类可以被想像成一个时钟从0开始向上记数. 这个类提供毫秒级分辨率.  Time类的构造函数有两个一个是默认构造函数,一个是拷贝构造函数。 默认构造函数使用当前时间(相对于程序启动时间)创建一个Time对象. 拷贝构造函数复制另一个Time对象。Time类包含两个成员函数unsigned long millise

张翼翔的专栏 1003

zthread学习 实例一

分配给线程的任务必须是从堆中创建的 【Thread t(new LiftOff(5,i));】,而且通过new出来的任务不需要我们管理,Thread会自己管理该任务,当该任务的引用计数为0时,自动delete该任务。 还可以看到: for (int i = 0; i

Jarry's World 2143

ZThread学习笔记(一)

zthread是一个开源的多线程开发库,是C++语言编写的开发包的下载地址为http://zthread.sourceforge.net/关于下载编译出现问题请参考我的前一个文章,下面主要介绍zthread的主要用法,粗粗浏览了一下源代码,风格特别好,本来想在它一个叫thread的线程库中找一个学习,马上就觉得那个代码是在是太难看了,还是zthread好看,C++第二卷上也是拿这个库作为并发那

fayzhou的专栏 9766
上一篇: zthread学习 三 使用Executor器来执行线程
下一篇: zthread学习 实例五 非任务对象的生存期
StudentFlp
博客等级 码龄16年 5粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值