【问题标题】:Threading console application in c++C++ 中的线程控制台应用程序
【发布时间】:2013-04-23 20:14:42
【问题描述】:

我使用 (HANDLE)_beginthreadex() 创建了一个 C++ Windows 控制台应用程序,其中 1000 个工作线程使用 x 处理程序线程进行控制。

最初我认为 1000 个处理程序线程会导致最快的时间,但经过测试我发现使用 100 个处理程序线程会导致最快的时间。 测试在四核intel i7处理器(支持超线程)上进行

我不确定要写什么,因为我的推理是为什么线程数会导致最佳性能。由于我的处理器只能同时处理 8 个线程,我会认为 8 会是最好的性能。

我正在写一份关于应用程序的小报告,我必须确定导致最佳性能的线程数并解释为什么会这样。

【问题讨论】:

标签: c++ multithreading


【解决方案1】:

理想情况下,您希望一次有 8 个 活动 线程。 8 通常不是理想的数字有很多原因,但可以肯定的是,您的线程中的工作不受 CPU 限制。如果在这种情况下线程太少,您会浪费时间,而太多线程当然会导致过度争用——并可能导致过多的上下文切换。

【讨论】:

  • IOW,分析应用程序以查看线程在哪里等待非 CPU 工作完成。 (+1)
  • 在我的应用程序中,我首先启动我的 1000 个工作线程,然后是我的处理程序线程,它们的启动顺序是否重要?如果处理线程首先启动并准备好在工作线程完成任务后处理它们,程序会运行得更好吗?
  • 一旦你克服了一些口吃,操作系统调度程序将占主导地位,所以几秒钟后它可能就无关紧要了。当然,唯一能确定的方法是分析。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多