一个多线程并发执行且顺序进出的执行器设计

news2024/11/24 5:00:37

考虑这样一种场景,有一批数据需要处理,且每个数据是有顺序的,这时最简单的方式就是按顺序同步执行每个数据的处理。但是,在有多核cpu时这种方式无疑是对cpu资源的极大浪费,这时就需要多开几个线程同时对数据进行处理,并且需要按顺序取到处理结果。这也就是多线程并发执行且顺序进出执行器的适用场景。
先看设计图:
在这里插入图片描述
从图中可以看到该执行器分三个部分:数据输入器、并发执行器、结果输出器。
其中数据输入器负责对数据进行编号,并发执行器负责对数据进行处理、结果输出器则保证输出的结果是按输入顺序输出的。
通过上图我们可以看到,其实这个执行器还是比较简单的,重点就是结果槽是顺序的,执行线程执行完将结果放到对应顺序的结果槽中,而取结果的线程按结果槽的顺序依次从结果槽中取数据,这样就保证了结果是顺序的。需要注意的是结果槽的数量和执行线程的数量是一致的或者大于执行线程数量的,取数据的过程是循环顺序从结果槽中取数据的。另外数据输入器在结束输入时需要给最后一个数据加一个结束的标志,这样结果输出器在取到的结果中发现这个标志才知道已经执行完成了,从而结束工作。
具体的实现代码后面补上吧,这里只是单纯分享一下设计思路。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/751153.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机视觉的图像标注与视觉任务

1 ​计算机视觉应用 计算机视觉是一种利用计算机和数学算法来模拟人类视觉的技术,可以应用于许多领域。以下是计算机视觉的八大应用: 图像识别:利用计算机视觉技术,可以对图像进行分类、识别和分割,从而实现自动化的…

FreeRTOS实时操作系统(十四)软件定时器

系列文章目录 文章目录 系列文章目录软件定时器API函数实验测试 软件定时器 定时器的作用:经过一段指定时间,触发超时事件 在裸机开发中,应用的是芯片自带的定时器模块,精度很高,在中断服务函数中处理信息&#xff0…

大模型基础知识 - 语言模型及其演进 公开版

本文为作者内部分享文档,由于不涉敏可以公开,分享本身是课程形式,有什么疑问欢迎在评论区留言。 开场白 人工智能发展到现在,在2个重要领域取得了重大突破,有望达到人类水平: 计算机视觉 (Com…

【电路原理学习笔记】第2章:电压、电流和电阻:本章习题

第2章:电压、电流和电阻 以后还是分开做,每一节习题都按节做,不集中在一起做了,太累了,而且要忙其他事,好不容易凑了几天时间做这个题 本章习题 同步练习 (2-1)3C电荷对应于多少…

【数据网格架构】数据网格架构详解

“我想指出,所提供的链接都不是附属的,我从本文中提到的公司中没有任何收获。我做这一切是因为直到最近我才听说过数据网格,我很期待这次活动,并希望在此之前深入了解一下。我还认为这可能会让其他人感兴趣,并付出了额…

pytorch2.0版本简介

PyTorch 2.0 中发布了大量足以改变 PyTorch 使用方式的新功能,它提供了相同的 eager mode 和用户体验,同时通过 torch.compile 增加了一个编译模式,在训练和推理过程中可以对模型进行加速,从而提供更佳的性能和对 Dynamic Shapes …

JVM解析:class结构和常量及方法初始化

文件结构 推荐官方文档:https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-3.html ClassFile {u4 magic;u2 minor_version;u2 major_version;u2 constant_pool_count;cp_info constant_pool[cons…

通过python的signal库模拟电源设备的csine波形

import numpy as np import matplotlib.pyplot as plt import random from scipy import signal def csin(length, amp,lenf,n):"""生成模拟CSIN波形的函数:param length: 波形长度:param amp: 波形振幅:return: CSIN波形数据"""amp 100 if (am…

函数和控制流

专栏简介:本专栏作为Rust语言的入门级的文章,目的是为了分享关于Rust语言的编程技巧和知识。对于Rust语言,虽然历史没有C、和python历史悠远,但是它的优点可以说是非常的多,既继承了C运行速度,还拥有了Java…

基于Springboot的宠物店管理系统(源代码+数据库)087

基于Springboot的宠物店管理系统(源代码数据库)087 一、系统介绍 本系统分为管理员、店员两种角色 店员角色包含以下功能: 登录、宠物主人管理、宠物管理、宠物医疗管理、宠物销售管理、宠物寄养管理、宠物用品管理、宠物日常服务管理、宠物常见问题、个人中心、…

基于JavaSwing+MySQL的仓库商品管理系统

点击以下链接获取源码: https://download.csdn.net/download/qq_64505944/88046204?spm1001.2014.3001.5503 JDK1.8 MySQL5.7 功能:管理员与员工两个角色登录,增删改查用户信息,修改密码,增删改查商品信息&#xff0c…

Java文件与IO

文章目录 前言认识文件绝对路径与相对路径普通文件与二进制文件 Java中的操作文件File 类文件的读写 前言认识文件 狭义上的文件(file)。针对硬盘这种持久化存储的I/O设备,当我们想要进行数据保存时,往往不是保存成一个整体,而是独立成一个个…

RocketMQ基础概念

目录 1.简介 2.架构 3.核心概念 1.简介 RocketMQ 是一款开源的分布式消息中间件,最初由阿里巴巴集团开发并开源。它旨在为分布式系统提供可靠、高性能、可扩展的消息通信能力。RocketMQ和RabbitMQ、KAFKA一起并列为现在主流的三大消息中间件。 一般MQ可以从三个…

Python(八)字符编码

❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

06_HDMI 显示器驱动设计与验证

06_HDMI 显示器驱动设计与验证 1. HDMI 接口及引脚定义1.1 HDMI A Type 接口引脚图1.2 HDMI A Type 接口引脚定义 2. HDMI 原理2.1 HDMI 显示原理2.2 TMDS 传输原理 3. 实验目标4. 程序框图4.1 顶层模块4.2 时钟生成模块4.3 HDMI 驱动控制模块4.3.1 第一个步骤4.3.2 编码模块参…

反垄断在中国

中国通过反垄断法 中国通过了具有里程碑意义的反托拉斯立法,外国企业表示谨慎性的欢迎,希望该法案能带来更大的开放性,但需要观察它是如何实施的。(华尔街日报 2007年8月32日报道) 反垄断法禁止垄断协议和诸如卡特尔及价格操纵,但允许能促进创新和技术进步的垄断之存在。…

微软亚洲研究院推出AI编译器界“工业重金属四部曲”

编者按:编译器在传统计算科学中一直是一个重要的研究课题。在人工智能技术快速发展和广泛应用的今天,人工智能模型需要部署在多样化的计算机硬件架构上。同时,训练和部署大型人工智能模型时又对硬件性能有着更高的要求,有时还需根…

c#示例-json序列化和json树

序列化 由于指针和引用类型的存在,在运行中的程序中,数据不一定是整块的。 可能东一块西一块散落在内存的各个地方。 序列,是指连续且有序的一个整体。序列化就是把数据变为连续有序整体的过程。 经过这样处理后的数据就可以方便的进行传输…

1130 - Host XXX‘ is not allowed to connect to this MySQL server

mysql 连接报错 这个问题是因为在数据库服务器中的mysql数据库中的user的表中没有没有用户 解决的方法: 登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称’%’。 1、连接服务器: mysql -u root -p…

万字解读 | 数据可视化平台--FineBI

什么是BI 学习目标 知道什么是BI 知道FineBI的优势 1. 商业智能: BI(Business Intelligence)是指通过收集、分析和解释企业内外部数据,为企业决策提供支持和指导的一种技术和工具。商业智能的目标是帮助企业管理者和决策者更好地理解企业…