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

jme*_*fin 5 c++ architecture multithreading boost game-engine

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

  • 主要:负责高级架构
  • 资源:负责异步文件I/O.
  • 网络:负责阻止网络I/O.
  • 工人:做CPU密集型工作

现在,有(hardware_threads - 3)工作线程,每个未使用的硬件单元一个,但我想通过将"资源"和"网络"线程组合到一个单元上再添加一个,因为两个线程都将花费很多时候闲着.

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

Pup*_*ppy 5

你是对的,因为这是一个坏主意.拥有一个线程用于一个工作设计听起来很简单,但实际上并非如此 - 特别是当某些工作比其他工作更重要时.此外,你没有足够的线程.通常你想要一些比这更多的东西来解决现在没有运行的其他线程的松弛.

这里的根本问题是您正在实现自己的线程后端.这是一个坏主意.你需要转向像TBB这样的东西,它将为你处理所有这些东西,而英特尔的那些工程师花费的方式,比你更长的分析和工作.

至于这是否值得进行优化,嗯,可能不是.只需制作足够的工作人员并使其保持加载状态,阻塞的资源/网络线程不会产生太大的影响.