gpt4 book ai didi

c++ - 在同一硬件单元上创建多个线程

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:25:39 25 4
gpt4 key购买 nike

我的游戏使用多线程架构,线程布局如下:

  • Main:负责高层架构
  • 资源:负责异步文件I/O
  • 网络:负责阻塞网络I/O
  • Workers:做 CPU 密集型工作

现在,有 (hardware_threads - 3) 个工作线程,一个用于每个未使用的硬件单元,但我想通过将“资源”和“网络”线程组合到一个单元中来添加一个,因为这两个线程都是会花很多时间闲置。

  1. 在 C++ 中使用 boost::thread 这可能吗?
  2. 这是否值得优化?

最佳答案

你是对的,因为这是个坏主意。为一项工作设计一个线程听起来很简单,但实际上并非如此 - 特别是当某些工作比其他工作更重时。另外,你做的线数不够。通常您需要更多的线程来解决当前未运行的其他线程的松弛问题。

这里的根本问题是您要实现自己的线程后端。这是一个坏主意。你需要转移到 TBB 之类的东西,它会为你处理所有这些东西,而英特尔的那些工程师比你花更多的时间来分析和处理它。

至于这是否值得优化,嗯,可能不是。只要制造足够多的工作人员并保持他们的负载,阻塞的资源/网络线程实际上不会有太大影响。

关于c++ - 在同一硬件单元上创建多个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14003753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com