数百个空闲线程的影响

2024-05-06

我正在考虑使用可能数百个线程来实现通过网络管理设备的任务。

这是一个在带有 Linux 内核的 powerpc 处理器上运行的 C++ 应用程序。

在每个任务进行同步以将数据从设备复制到任务的初始阶段之后,任务变得空闲,并且仅在收到警报或需要更改一些数据(配置)时唤醒,这在启动后很少见阶段。一旦所有任务都达到“空闲”阶段,我预计每秒只有几个任务需要唤醒。

所以,我主要关心的是,如果我有数百个线程,一旦它们闲置,是否会对系统产生负面影响?

谢谢。 阿姆索

edit:
我正在根据我得到的答案更新问题。多谢你们。 所以看起来有大量线程空闲(IO 阻塞、等待、睡眠等),per se,不会对系统的响应能力产生影响。 当然,他们会为每个线程的堆栈和 TLS 数据花费额外的钱,但只要我们在该东西上投入更多内存(使其更多 €€€)就可以了

但随后,还必须考虑其他问题。由于需要等待队列或其他类似资源,数百个线程等待可能会增加内核的内存使用量。还有一个延迟问题,看起来是不确定的。要检查每个解决方案的响应能力和内存使用情况,应该对其进行测量并进行比较。

最后,数百个大部分处于空闲状态的线程的整个想法可以像线程池一样建模。这会降低一些代码线性度,但会显着提高解决方案的可扩展性,并且通过适当的注意,可以轻松调整以调整性能和资源使用之间的折衷。

我想仅此而已。感谢大家的意见。

--
amso


每个线程都有开销 - 最重要的是每个线程都有自己的堆栈和 TLS。性能并不是什么大问题,因为除非他们实际做任何事情,否则他们不会获得任何时间片。您可能仍然想考虑使用线程池。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数百个空闲线程的影响 的相关文章

  • 如何避免情绪低落?

    我有一个实现状态模式每个状态处理从事件队列获取的事件 根据State因此类有一个纯虚方法void handleEvent const Event 事件继承基础Event类 但每个事件都包含其可以是不同类型的数据 例如 int string
  • 如何在列表框项目之间画一条线

    我希望能够用水平线分隔列表框中的每个项目 这只是我用于绘制项目的一些代码 private void symptomsList DrawItem object sender System Windows Forms DrawItemEvent
  • Meteor.setTimeout 和 Meteor.methods 之间的并发

    在我的 Meteor 应用程序中实现回合制多人游戏服务器 客户端通过发布 订阅接收游戏状态 并且可以调用 Meteor 方法sendTurn将回合数据发送到服务器 他们无法直接更新游戏状态集合 var endRound function g
  • 添加要在给定命令中运行的 .env 变量

    我有一个 env 文件 其中包含如下变量 HELLO world SOMETHING nothing 前几天我发现了这个很棒的脚本 它将这些变量放入当前会话中 所以当我运行这样的东西时 cat env grep v xargs node t
  • 将布尔参数传递给 SQL Server 存储过程

    我早些时候问过这个问题 我以为我找到了问题所在 但我没有 我在将布尔参数传递给存储过程时遇到问题 这是我的 C 代码 public bool upload false protected void showDate object sende
  • 在 Visual Studio 2008 上设置预调试事件

    我想在 Visual Studio 中开始调试程序之前运行一个任务 我每次调试程序时都需要运行此任务 因此构建后事件还不够好 我查看了设置的 调试 选项卡 但没有这样的选项 有什么办法可以做到这一点吗 你唯一可以尝试的 IMO 就是尝试Co
  • 加快网络抓取速度

    我正在使用一个非常简单的网络抓取工具抓取 23770 个网页scrapy 我对 scrapy 甚至 python 都很陌生 但设法编写了一个可以完成这项工作的蜘蛛 然而 它确实很慢 爬行 23770 个页面大约需要 28 小时 我看过scr
  • Qt moc 在头文件中实现?

    是否可以告诉 Qt MOC 我想声明该类并在单个文件中实现它 而不是将它们拆分为 h 和 cpp 文件 如果要在 cpp 文件中声明并实现 QObject 子类 则必须手动包含 moc 文件 例如 文件main cpp struct Sub
  • Web API - 访问 DbContext 类中的 HttpContext

    在我的 C Web API 应用程序中 我添加了CreatedDate and CreatedBy所有表中的列 现在 每当在任何表中添加新记录时 我想填充这些列 为此目的我已经覆盖SaveChanges and SaveChangesAsy
  • 尝试安装 LESS 时出现“请尝试以 root/管理员身份再次运行此命令”错误

    我正在尝试在我的计算机上安装 LESS 并且已经安装了节点 但是 当我输入 node install g less 时 出现以下错误 并且不知道该怎么办 FPaulMAC bin paul npm install g less npm ER
  • 将 xml 反序列化为类,list<> 出现问题

    我有以下 XML
  • 如何使我的表单标题栏遵循 Windows 深色主题?

    我已经下载了Windows 10更新包括黑暗主题 文件资源管理器等都是深色主题 但是当我创建自己的 C 表单应用程序时 标题栏是亮白色的 如何使我自己的桌面应用程序遵循我在 Windows 中设置的深色主题 你需要调用DwmSetWindo
  • 插入记录后如何从SQL Server获取Identity值

    我在数据库中添加一条记录identity价值 我想在插入后获取身份值 我不想通过存储过程来做到这一点 这是我的代码 SQLString INSERT INTO myTable SQLString Cal1 Cal2 Cal3 Cal4 SQ
  • C++ fmt 库,仅使用格式说明符格式化单个参数

    使用 C fmt 库 并给定一个裸格式说明符 有没有办法使用它来格式化单个参数 example std string str magic format 2f 1 23 current method template
  • 控制到达非 void 函数末尾 -wreturn-type

    这是查找四个数字中的最大值的代码 include
  • Validation.ErrorTemplate 的 Wpf 动态资源查找

    在我的 App xaml 中 我定义了一个资源Validation ErrorTemplate 这取决于动态BorderBrush资源 我打算定义独特的BorderBrush在我拥有的每个窗口以及窗口内的不同块内
  • ASP.NET MVC 6 (ASP.NET 5) 中的 Application_PreSendRequestHeaders 和 Application_BeginRequest

    如何在 ASP NET 5 MVC6 中使用这些方法 在 MVC5 中 我在 Global asax 中使用了它 现在呢 也许是入门班 protected void Application PreSendRequestHeaders obj
  • C 中的异或运算符

    在进行按位操作时 我在确定何时使用 XOR 运算符时遇到一些困难 按位与和或非常简单 当您想要屏蔽位时 请使用按位 AND 常见用例是 IP 寻址和子网掩码 当您想要打开位时 请使用包含或 然而 XOR 总是让我明白 我觉得如果在面试中被问
  • 如何在 C++ BOOST 中像图形一样加载 TIFF 图像

    我想要加载一个 tiff 图像 带有带有浮点值的像素的 GEOTIFF 例如 boost C 中的图形 我是 C 的新手 我的目标是使用从源 A 到目标 B 的双向 Dijkstra 来获得更高的性能 Boost GIL load tiif
  • 恢复上传文件控制

    我确实阅读了以下帖子 C 暂停 恢复上传 https stackoverflow com questions 1048330 pause resume upload in c 使用 HTTP 恢复上传 https stackoverflow

随机推荐

  • Doctrine/Symfony 如何使用数组中的特定数据更新实体

    我环顾四周太久了 但没有运气 我的情况是 我有一个有点大的表 60 列 在 Doctrine Entity 中表示 在 FosREST 上工作 我想要实现的是 我想发送带有特定数据的 JSON 例如 phone gt new phone n
  • 一项活动中有多个 YouTube 玩家

    我正在使用 Youtube Android Player API 如下所述 https developers google com youtube android player https developers google com you
  • 基于现有数据库表创建@TableVariable?

    我想在存储过程中使用表变量 但这是一个问题 我的表非常大 声明表变量也需要很长的代码来编写和调试 请告诉我一些快速声明表变量的方法 是否可以基于现有表创建表变量 或者请分享任何创建用于创建表变量的代码的提示 Thanks 右键单击表格 选择
  • Java 8 Streams - 按层次结构对嵌套列表进行排序

    给出以下示例 我想要一个对列表和嵌套列表进行排序的流函数 class Foo public int sort public List
  • 如何在onSaveInstanceState中使用变量[重复]

    这个问题在这里已经有答案了 我刚刚开始在 android 上学习编程 并且在使用变量时遇到问题onSaveInstanceState 这是我的代码 int resultCode Override public void onCreate B
  • Python:代码统计

    你知道是否有一个可以生成代码统计信息的 Python 库吗 我正在考虑指向一个包并获取类 函数 方法 文档块行等的数量 它最终可能会包含无用的东西 例如 lambda 的数量或其他疯狂的统计数据 只是为了好玩 人们通常不会用十几两行代码就能
  • 将最后一行除以组的第一行

    我有一个如下所示的数据框 ID Quantity Time 54 100 2020 01 01 00 00 05 54 87 2020 01 01 00 00 06 58 400 2020 01 01 00 00 08 58 390 202
  • 如何在 Spark 中创建空数据帧

    我有一组基于 Avro 的配置单元表 我需要从中读取数据 由于Spark SQL使用hive serdes从HDFS读取数据 因此比直接读取HDFS慢很多 因此 我使用数据块 Spark Avro jar 从底层 HDFS 目录读取 Avr
  • 如何在服务器中处理用于发布目的的日期

    我从 ASP NET MVC 获得了这个值 Date 1446393600000 它在 SQL 数据库中的值是 2015 11 02 这是一个date 仅限日期 并将其作为 javascript 对象进行操作 我使用moment js ht
  • 如何选择与 AVAssetReader 一起使用的像素格式类型(kCVPixelBufferPixelFormatTypeKey)?

    我们正在使用AVAssetReader and AVAssetWriter有点像中提到的风格使用 AVAssetWriter 进行视频编码 崩溃 https stackoverflow com questions 8191840 video
  • AppCompatActivity 中的 setListAdapter

    我有一个具有功能的程序listArray with extends AppCompatActivity但我的代码有错误 my code 新闻活动 public class NewsActivity extends AppCompatActi
  • 如何判断“NSManagedObject”是否已被删除?

    我有一个NSManagedObject已被删除 并且包含该托管对象的上下文已被保存 我明白那个isDeleted回报YESif Core Data 将要求持久存储在下一次保存操作期间删除该对象 然而 由于保存已经发生 isDeleted回报
  • Mac OS Flutter 构建应用程序包失败:密钥库格式无效

    自从一周以来 我一直在尝试从 flutter 应用程序创建 android 应用程序包 并且我一直遵循创建上传密钥库 https flutter dev docs deployment android给定 flutter 官方网站 在 Ma
  • 将一行字段设置为其他 2 个字段的乘积

    我有一个这样的SQL表结构 Id A B C D 1 1 5 6 25 2 2 10 5 25 3 3 7 4 25 4 1 6 5 26 5 2 10 5 26 6 3 8 3 26 我想写一个脚本 它将更新所有B 和 C 列在行中A 3
  • 阿拉伯语查询字符串问题(???在值中)

    我在查询字符串中发送一个阿拉伯语值 当在服务器上检索它时 该值是错误的并被引号替换 例如 http server mypage aspx qs mortgage http server mypage aspx qs D9 85 D8 B1
  • 如何在GIT中检出单个文件

    我们开发了一个自动部署工具 用于在 jboss 服务器中部署文件 ear war 和 jar 开发人员将在 Visual Source 安全中签入文件 自动部署工具会自动一一检出开发者指定的最新文件 并使用API 将其部署到jboss服务器
  • 在 Python 中计算分布的对数似然

    有什么简单的方法计算任何分布的对数似然适合数据 OP 的解决方案 Python 有 82 个标准发行版 可以找到here https docs scipy org doc scipy reference stats html continu
  • 使用 libclang 从内存中的 C 代码生成程序集

    我需要实现一个使用 LLVM Clang 作为后端将 C 代码编译为 eBPF 字节码的库 代码将从内存中读取 我也需要在内存中获取生成的汇编代码 到目前为止 我已经能够使用以下代码编译为 LLVM IR include
  • 如何查看 docker build“RUN 命令”标准输出? (适用于 Windows 的 Docker)

    过去我可以简单地做这样的事情 Dockerfile FROM ubuntu RUN echo test 这会输出test到我的壳 我用它作为调试我的构建的一种方式 在 Windows 版 docker 的最新稳定版本中 构建输出看起来完全不
  • 数百个空闲线程的影响

    我正在考虑使用可能数百个线程来实现通过网络管理设备的任务 这是一个在带有 Linux 内核的 powerpc 处理器上运行的 C 应用程序 在每个任务进行同步以将数据从设备复制到任务的初始阶段之后 任务变得空闲 并且仅在收到警报或需要更改一