zthread学习 三 使用Executor器来执行线程

NPU性能榨取手把手教程:RK3588上YOLOv5s多线程部署与120FPS极限探索 RK3588 YOLOv5s多线程部署优化指南 本教程深入解析RK3588芯片上YOLOv5s模型的高性能多线程部署方案。RK3588作为瑞芯微旗舰AIoT芯片,内置三核NPU(6TOPS算力)和硬件加速器(RGA/VPU),为AI推理提供强大支持。通过线程池技术,我们将视频处理的读取、推理、后处理等环节解耦并行,显著提升系统吞吐量。教程详细介绍了从PyTorch到RKNN格式的模型转换流程、INT8量化方法,以及基于RKNN C++ SDK的YOLOv5推理核心实现,帮助开发者最大化发挥RK3588的AI 阅读详情

[cpp]  view plain copy
  1. #include "stdafx.h"  
  2. #include <iostream>  
  3. #include "zthread/PoolExecutor.h"  
  4. #include "zthread/ThreadedExecutor.h"  
  5. #include "zthread/ConcurrentExecutor.h"  
  6. #include "zthread/SynchronousExecutor.h"  
  7. #include "zthread/Runnable.h"  
  8. #include "zthread/PoolExecutor.h"    
  9.   
  10. using namespace ZThread;  
  11. using namespace std;  
  12.   
  13. class LiftOff : public Runnable  
  14. {  
  15. public:  
  16.     LiftOff(int count, int idn = 0): countDown(count), id(idn) {}  
  17.     ~LiftOff()  
  18.     {  
  19.         cout<< id << "  competed" <<endl;  
  20.     }  
  21.     void run()  
  22.     {  
  23.         while (countDown--)  
  24.         {  
  25.             cout << id << " : " <<countDown <<endl;  
  26.         }  
  27.         cout<<"LiftOff!" <<endl;  
  28.     }  
  29. private:  
  30.     int countDown;  
  31.     int id;  
  32. };  
  33.   
  34. int _tmain(int argc, _TCHAR* argv[])  
  35. {  
  36.     try  
  37.     {  
  38.         //ThreadedExecutor executor;  
  39.         //PoolExecutor executor(5);  
  40.         //ConcurrentExecutor executor;  
  41.         SynchronousExecutor executor;  
  42.         for (int i = 0; i < 5; i++)  
  43.         {  
  44.                 executor.execute(new LiftOff(10, i));  
  45.         }  
  46.         cout <<"Waiting for LiftOff" <<endl;  
  47.     }  
  48.     catch (Synchronization_Exception&  e)  
  49.     {  
  50.         cerr << e.what() <<endl;  
  51.     }  
  52.     cin.get();  
  53.     return 0;  


 Executor的种类,一个Executor对象,知道如何创建合适的语境来执行Runnable对象,不同的Executor对象有不同的任务执行方式,Executor是一个虚基类,其下派生了四种执行器:

1、ThreadedExecutor:该执行器为每一个任务创建一个线程,当任务过多时,会导致过多的开销。

 

2、PoolExecutor:线程池,以一个有限的线程集来执行提交的任务。预先将开销很大的线程分配工作一次性做完,在可能的时候重用这些线程,这样做可以节省很多时间,因为不会为每一个线程都创建线程。不会因为任务过多而导致过多的开销。适用于有大量的任务请求时使用。

 

3、ConcurrentExecutor:类似于PoolExecutor,只是它只会存在一个大小固定的线程。如果多个任务被提交至ConcurrentExecutor,每一个任务都会在上一个任务执行完成之后开始执行完成,所有的任务使用同一个线程。

 

4、SynchronousExecutor:类似于ConcurrentExecutor,同一时刻只运行一个任务,串行代替了并发。但SynchronousExecutor不会创建和管理线程,它使用提交任务的线程,本例中使用main()函数的主线程。

 

 

异常:我们必须把线程处理代码放在一个try块中,因为如果出现错误码的话,Executor的executor函数可能会抛出Synchronization_Exception异常。

 

如果Executor中的任务全部完成,程序才会退出。

零基础入门Simulink——基于Simulink的MIMO-OFDM系统仿真建模示例 MIMO概述MIMO技术利用多个天线进行信号发送和接收,通过空间复用来提高数据传输速率,或通过空间分集来增强信号的可靠性。OFDM概述OFDM是一种将高速率数据流分成多个低速数据流并行传输的技术,每个子载波都采用调制方式(如BPSK、QPSK),并通过IFFT/FFT变换实现串并转换。MIMO-OFDM优势结合了MIMO的空间分集增益与OFDM对抗多径效应的能力,适用于宽带无线通信系统。提供了更高的数据速率和更好的频谱效率,是现代无线通信标准(如4G LTE、5G NR等)的核心技术之一。 阅读详情

相关推荐

zemax光线光扇图

通过入瞳某一坐标(PX,PY)的光线在像面上有唯一的位置(EX,EY),以EX,EY为纵坐标,以PX,PY为横坐标,分别建立坐标系,把通过入瞳的光线都在坐标系里描点就得到了光扇图。对于视场内任意一点,取其子午面内的光线,以光线在光阑面上的透射点坐标为横坐标,同时以该光线在像面上的坐标为纵坐标,描出所有点,构成的图形即为子午面光扇图。在焦点位置,曲线的斜率为0,也就是说,不管入射时的横坐标(光阑面上的位置)是多少,离轴多远,都将汇聚在焦点处。此时,子午面和弧矢面有不同的分布,两条曲线不重合。

fendoudecheng的博客 8099

并发编程之Executor线程池

1. 线程池简介 1.1 线程池: “线程池”,顾名思义就是一个线程缓存,线程是稀缺资源,如果被无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,因此Java中提供线程池对线程进行统一分配、调优和监控; 1.2 线程池介绍 在web开发中,服务器需要接受并处理请求,所以会为一个请求来分配一个线程来进行处理。如果每次请求都新创建一个线程的话实现起来非常简便,但是存在一个问题:如果并发的请求数量...

qq_38130094的博客 334

实战:GMTSAR软件处理陆探一号SAR数据

摘要:陆探一号(LT-1)是我国首组L波段差分干涉SAR卫星星座,具备全天候多极化成像能力,主要服务于自然资源监测等领域。文章详细介绍了其轨道参数(607km太阳同步轨道)和传感器技术指标(5种成像模式)。同时阐述了开源InSAR处理软件GMTSAR的安装方法(基于Ubuntu系统)及实验流程,包括数据准备、DEM生成和干涉处理步骤,特别说明了轨道数据缺失时的MATLAB插值处理方法。该研究为国产SAR卫星数据处理提供了技术参考。

一个RSer的博客 1034

zthread学习 实例三 使用Executor器来执行线程

Executor的种类,一个Executor对象,知道如何创建合适的语境来执行Runnable对象,不同的Executor对象有不同的任务执行方式,Executor是一个虚基类,其下派生了四种执行器: 1、ThreadedExecutor:该执行器为每一个任务创建一个线程,当任务过多时,会导致过多的开销。 2、PoolExecutor:线程池,以一个有限的线程集来执行提交的任务。预先将开销很大的线程分配工作一次性做完,在可能的时候重用这些线程,这样做可以节省很多时间,因为不会为每一个线

Jarry's World 3139

深入解析Carry4的内部结构与工作原理

本文深入解析了Xilinx/AMD FPGA中的核心硬件资源Carry4的内部结构和工作原理。作为实现超前进位的关键物理电路,Carry4通过其CI、DI、S、O、CO等端口,高效处理4位算术运算的进位逻辑。文章通过端口详解、结构分析和实战计算示例,揭示了其如何加速加法、减法等运算,并探讨了其在优化FPGA设计时序与资源利用中的关键作用。

n4o5p6q7r的博客 502

从BIOS到路由器:深入拆解SPI NOR Flash的硬件连接与‘芯片内执行’(XIP)奥秘

本文深入解析SPI NOR Flash的硬件连接与‘芯片内执行’(XIP)技术,从BIOS到路由器的应用场景出发,详细介绍了其架构精髓、典型连接方案、时序设计及性能优化方法。通过实际案例和参数对比,帮助开发者掌握NOR Flash在嵌入式系统中的关键作用与设计技巧,提升电路设计效率与可靠性。

weixin_30522183的博客 492

多线程编程-Executors线程池 详解

一、前言: Java通过Executors提供四种线程池,分别为: 1、newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程,有隐患。 2、newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。 3、newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行: ScheduledExecutorService pool2=Executor

撸起袖子加油干 992

【OpenAirInterface知识-3】OAI端到端部署之5G基站部署

在上一篇文章中已经完成了5G核心网的部署,本篇文章将介绍OAI 5G基站的部署过程。

起名字难上难的博客 3422

TransientDataAccessResourceException(瞬时数据访问资源异常)可能的原因和解决方法

异常时,查看异常的详细信息以获取更多的上下文。仔细分析涉及到的网络连接、数据库连接、文件系统、资源路径、连接池配置、数据源配置等方面的问题,确保它们在当前的应用程序环境和使用场景下是有效的。根据异常信息,逐步排查可能的原因,以便更好地理解和解决问题。根据异常的上下文,选择合适的解决方法,可能需要与相关领域的专业人员进行沟通以获取更多的支持。表示在数据访问过程中发生了瞬时的异常,通常表示在访问数据资源时发生了可恢复的、短暂的错误。

Java开源程序猿 3395

创龙 瑞芯微 RK3588 国产2.4GHz八核 工业开发板—ISP图像处理开发案例

创龙科技研发的 TL3588-EVM 评估板具备强大视频处理能力,可满足多场景视频开发需求。为助力开发者快速上手,本文整理 7 个实用视频开发案例,涵盖从采集到显示的全流程,详细说明各案例的硬件连接、参数配置与代码解析,帮助开发者高效实现评估板视频相关功能开发与调试。

创龙,嵌入式一体化解决方案商 209

“华为杯”研究生数学建模竞赛2020年-【华为杯】E题:能见度估计与预测(附获奖论文及python代码实现)

因此,题目要求借助机场的 AMOS 观测数据中的气压、温度、湿度、风速等气象因子,达到 100% 时,空气中的水汽便会凝结成细微的水滴悬浮于空中,使地面水平的能见度下。传统的仪器探测法成本高,覆盖范围小,而基于视频的能见度检测能弥补仪器测量的不足之处,但是预测精度不高,需要进一步改。象条件,空气质量的影响,其中较为关键的影响因子是雾和霾。性过强,激光能见度仪的检测方法更为可信,但是激光能见度仪覆盖的检测范围小,安装。覆盖的交通视频路况数据间接计算得到能见度数值的方法,此方法成本较低,覆盖范围广。

getusushu的博客 2282

TransientDataAccessResourceException 解决

org.springframework.dao.TransientDataAccessResourceException 1 pojo实体对象属性与数据库表属性不一致的原因,但是我不是这个问题。 2 数据库表字段为datetime 类型,默认为0,无法转换,默认值可改为0000-00-00 00:00:00:00,或者连接数据库url后加上 zeroDateTimeBehavior=convertToNull,自动转换。 例: dbconfig.properties文件配置: url=jdbc:my

qq_17885583的博客 8325

Web3:Ubuntu系统 使用Docker-compose方式部署blockscout浏览器&配置版本-v5.2.3-beta+charts图表

详细介绍了在Ubuntu 23.04系统上部署Blockscout浏览器的步骤,以及过程中遇到的问题进行一一解决。

鄙人kunzhi96,感恩遇见! 2万+

IBM的ZThread库

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

hitrose27的专栏 3222

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

蓝牙模块HM-10手册

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

C++编程思想 第2卷 第11章 并发 使用线程 使用执行器简化工作

使用ZThread的执行器 Executor 可以减少编码的工作量 执行器在客户和任务的执行之间提供了一个间接层 客户不再直接执行任务 而是由一个中间的对象来执行该任务这里要改个名字 要不然会重名 出现函数未定义 //: c11:ThreadedExecutor1.cpp // From "Thinking in C++, Volume 2", by Bruce Eckel &amp; Chu...

eyetired的博客 255

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

zthread学习 实例六 访问控制

就是对共享资源的同步访问,以免造成不确定的状态。 Zhread库是基于Mutex临界区来组建同步机制的。 [cpp] view plaincopy #include "stdafx.h"   #include    #include       #include "zthread/Guard.h"   #include "zt

fengliping的专栏 825

boost::shared_ptr与ZThread::PoolExecutor联用导致的错误

  由于两者均非常负责任的完成对所拥有资源(指针)的释放,所以,当将一个智能指针传给PoolExecutor时,将会由于对指针的重复释放而导致错误。

Samlin的专栏 1123

TransientRooDataAccessResourceException(瞬时Roo数据访问资源异常)可能的原因和解决方法

异常时,要注意它是瞬时的,通常是暂时性的问题。同时,及时地检查和修复与数据访问相关的问题,确保系统的稳定性和可用性。表示在使用 Spring Roo 数据访问框架时发生的瞬时异常,通常是由于数据访问资源的暂时性问题引起的。如果使用 Roo 自动生成的代码中存在问题,例如错误的查询逻辑或错误的方法实现,可能导致。错误的 SQL 语句、不正确的表名或字段名等数据库查询语句问题可能引起。数据访问层的不合理设计、错误的异常处理策略可能导致。数据库中的数据不符合预期的完整性约束,可能导致。

Java开源程序猿 1986

异常:TransientDataAccessResourceException: SqlSessionFactory......... SpringManagedTransactionFact

异常org.springframework.dao.TransientDataAccessResourceException: SqlSessionFactory must be using a SpringManagedTransactionFactory in order to use Spring transaction synchronization 检查配置文件中, 数据库是否连接正确;...

beginnerNew的博客 2674

org.springframework.dao.TransientDataAccessResourceException: PreparedStatementCallback; SQL [select

org.springframework.dao.TransientDataAccessResourceException: PreparedStatementCallback; SQL [select * from test01 where id = ]; Parameter index out of range (1 > number of parameters, which is 0).; nested exception is java.sql.SQLException: Parameter i

m0_46212244的博客 3959

org.springframework.dao.TransientDataAccessResourceException

标题 org.springframework.dao.TransientDataAccessResourceException org.springframework.dao.TransientDataAccessResourceException: Error setting null for parameter #7 with JdbcType DATE . Try setting a di...

qq_45985039的博客 2702

TransientDataAccessResourceException:

TransientDataAccessResourceException: Parameter 查看一下你的返回值,在传参时,是不是传了集合但是又没法接受集合!

kk1213_的博客 1075

TransientDataAccessPresourceException

20201127 1. (1)错误: 消息PreparedStatementCallback; SQL [从1 = 1的用户中选择count(*)];参数索引超出范围(1>参数数量,即0)。嵌套异常是java.sql.SQLException:参数索引超出范围(1>参数数量,为0)。 不知道什么什么东西,导致的索引超出范围 (2)原因: 把sb.toString() 写成了 sql 仔细研究,发现返回的queryForObject()函数,第一个参数应该是一个字符串 如果写成sql ,那返

qq_42214286的博客 1254

JDBC的org.springframework.dao.TransientDataAccessResourceException错误

1.错误:临时数据访问资源异常 Exception in thread “main” org.springframework.dao.TransientDataAccessResourceException: StatementCallback; SQL [insert into account(id,name,money) value (13,‘test’,007)]; Could not re...

qq_44682242的博客 2008

Transientdataaccessresourceexception

TransientdataaccessResourceexception 错误解释:Mbytis调用存储过程出现错误,不允许使用远程表函数调用 错误原因:数据库中的数据类型和pojo类中的数据类型不同 修改错误:将pojo类和数据库中的属性数据类型写成相同的,不然无法存储 总结:pojo类中的属性数据类型,必须和数据库中的数据类型相同

wan23333的博客 9901

大数据WEB阶段 TransientDateAccessResourceException

大数据WEB阶段 TransientDateAccessResourceException一 、 分析 如果数据库保存的字段有时间 , 但是没有给该字段赋值时 ,则该字段默认是0000-00-00 00:00:00 , 此时数据库会报错 二、 解决 修改jdbcUrljdbcUrl=jdbc:mysql://IP地址:端口号/数据库名?zeroDateTImeBehavior=converTonNu

chou_out_man的博客 490

【MySQL】org.springframework.dao.TransientDataAccessResourceException: Error attempting to get column

使用Mybatis plus的时候,查询select all,恰好报了异常 ; Zero date value prohibited; nested exception is java.sql.SQLException: Zero date value prohibited, mergedContextConfiguration = [WebMergedContextConfiguration@595b007d testClass = ApplicationTest, locations = '{}', c

weixin_44458365的博客 1798
上一篇: zThread学习 二
下一篇: zthread学习 实例四 让步、休眠、优先级
StudentFlp
博客等级 码龄16年 5粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值