【问题标题】:Console application with Multithreading on Single core [duplicate]单核上具有多线程的控制台应用程序[重复]
【发布时间】:2019-11-21 20:51:22
【问题描述】:

可能重复:
Will Multi threading increase the speed of the calculation on Single Processor

我正在重新发布关于单核处理器上的多线程的问题。

原来的问题是: Will Multi threading increase the speed of the calculation on Single Processor

有人问我一个问题,在任何给定时间,都只允许一个线程在单个内核上运行。如果是这样,为什么人们在应用程序中使用多线程。假设您正在运行控制台应用程序,并且很有可能编写应用程序以在主线程上运行。但是人们仍然选择多线程。

【问题讨论】:

  • 投票以完全重复的方式关闭 - 我不明白你为什么要再次问这个问题。
  • 你好乔恩,我想我没有正确表达我的问题。我也修改了这个问题。但人们也没有回复那个编辑过的问题。所以我再次发布它并指向旧的queston。希望这一次,我正确地发布了问题。请允许人们发布他们的 cmets。谢谢。

标签: c# multithreading


【解决方案1】:

“纯”CPU 工作可能不会更快,但许多任务涉及不在 CPU 上的事情(例如访问文件系统、网络、与用户交互等)。即使在单核系统上,使用多线程也可以让一个线程等待文件系统访问,一个等待网络操作,一个等待用户响应等等。

因此,虽然使用多线程不会使 CPU 密集型进程更快,但它可以让您的应用程序响应更快(也就是说,它可以“更快”响应用户交互,因为它没有被阻塞等待网络操作完成,比如说)。

请注意,从技术上讲,异步操作将比使用多个阻塞线程更快(因为您没有上下文切换的开销),但多阻塞线程范例通常比异步编程更易于理解。

【讨论】:

  • 感谢您的回复。但我想了解异步操作如何比多线程更好。如果我没记错的话,异步操作在不同的线程上运行。同样,必须有正确的上下文切换。请发布有关异步编程如何优于多线程的文章链接或答案。感谢您的宝贵时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-11
  • 1970-01-01
  • 2015-06-25
  • 1970-01-01
  • 2015-08-23
相关资源
最近更新 更多