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

PaddleOCRv5训练自己的模型-微调文字识别模型

本文介绍了使用PaddleOCR微调文字识别模型的具体步骤。首先需要按照官方格式准备数据集,包括图片和标注文件。然后进行模型训练,包括环境安装、预训练模型下载、配置文件修改等关键环节,特别针对训练中可能出现的类别数不匹配问题提供了三种解决方案。文章还详细说明了模型导出为静态图格式的方法,以及如何调用训练好的模型进行推理。整个过程涉及多个技术细节,如早停机制设置、断点续训方法等,为需要提升OCR识别精度的开发者提供了实用指导。

weixin_43827982的博客 3176

灯塔问题:贪心与动态规划算法解析

区间覆盖问题是算法设计中的经典案例,常用于理解贪心算法与动态规划的核心差异。贪心算法通过局部最优选择逐步构建全局解,具有O(n log n)的高效时间复杂度,特别适合处理一维区间覆盖场景。动态规划则采用自底向上的填表法,虽然通用性更强但复杂度较高。在实际工程中,这类算法广泛应用于无线基站部署、监控设备布置等资源优化场景。通过分析灯塔问题的两种解法,可以深入掌握算法选择的关键因素,如问题规模、性能要求和实现复杂度。

weixin_28720573的博客 259

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

Altium Designer 16安装教程(Windows11、小白教程)

Altium Designer 16在Windows11中的超详细安装教程

qq_47003770的博客 1万+

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

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

Jarry's World 2304

MacOS上如何修改jupyter book的默认打开地址以及如何复制文件路径

记点笔记,才换新系统小半年,还是不太熟悉,所以记录一下笔记,感觉之后也会用到,希望能帮到你们。主要内容是:修改jupyter的默认地址以及复制文件路径。

魔仙的博客 1978

K-Means聚类算法 — 算法原理、质心计算、距离度量、聚类效果评价及优缺点

分类知识   分类是根据样本某些属性或某类特征(可以融合多类特征),把样本类型归为已确定的某一类别中。机器学习中常见的分类算法有:SVM(支持向量机)、KNN(最邻近法)、Decision Tree(决策树分类法)、Naive Bayes(朴素贝叶斯分类)、Neural Networks(神经网络法)等。   但当对海量数据进行分类时,为了降低数据满足分类算法要求所需要的预处理代价,往往需要选...

zhf的博客 1万+

跨平台线程库 ZThread入门

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

westice的专栏 530

MISRA C 详解 · 专栏06:2023 与 2025 更新总览(相对 2012 的差异)

本专栏 01~05 篇基于(143 规则 + 16 指令)。这六年间标准又前进了两步——(大改)和(微调)。本文补充说明「相对 2012,标准变在哪」,并给出新增规范的代表性示例。

XavierKong的博客 73

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

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

Jarry's World 2769

YOLO11涨点优化:注意力魔改 | 引入Deformable Attention (可变形注意力),灵活感受野自适应复杂形变目标

Deformable Attention为YOLO11带来的不仅是2.6个百分点的mAP提升,更是一种全新的“形变感知”范式。标准卷积的固定感受野在非刚性目标、多尺度变化和遮挡场景下力不从心——Deformable Attention恰好填补了这一空白。从架构设计到代码实现,从竞品对比到部署方案,从生态工具到安全风险,本文覆盖了将Deformable Attention引入YOLO11所需的全部知识链路。

2601_95807009的博客 286

CentOS7 内核升级

可在http://ftp.sjtu.edu.cn/sites/elrepo.org/linux/kernel/el7/x86_64/RPMS选择对应架构平台不受影响的内核版本文件下载,然后离线安装,也可通过yum下载包后进行安装。通过 #uname -sr ,可以看到当前的内核版本 Linux 3.10.0-1160.el7.x86_64。首先找台能访问互联网的机器,通过联网的机器进行内核包下载。lt:longterm的缩写:长期维护版;ml:mainline的缩写:最新稳定版;

Jian Sun_的博客 601

windows平台下编译zThread库

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

sunchenx的专栏 2211

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Qt中的线程与信号槽

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

优快云_YJX的博客 543

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

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、付费专栏及课程。

余额充值