【发布时间】:2013-06-24 15:35:20
【问题描述】:
我正在学习 C# 中的线程。但是,我无法理解线程的哪些方面实际上在提高性能。
考虑只有一个核心处理器存在的场景。将您的任务分成多个线程使用相同的进程上下文(共享资源)并且它们同时运行。由于线程只是共享时间,为什么它们的运行时间(周转时间)小于单线程进程?
【问题讨论】:
-
线程在多核环境中效率最高
-
考虑另一种情况,仍然在单核处理器上:您正在从网站下载一个大文件。该操作很可能需要一段时间并且不会完全使用 CPU。线程允许您将空闲的 CPU 时间用于其他任务。
-
这样想,如果你必须测试'X'的东西,你自己能不能做得更快?或者如果你和其他几个人都这样做会更快吗?
-
您的应用程序可能正在等待 CPU 以外的其他东西 - 例如通过网络传输的数据,或从硬盘加载文件。在这种情况下,将这种情况发生在另一个线程中而不是阻塞应用程序中的主线程可能是有意义的。
-
“由于线程只是共享时间,为什么它们的运行时间(周转时间)小于单线程进程”?周转时间更长。拥有更多线程可以让您在另一个线程正在休眠等待通知唤醒时进行工作(例如您执行同步 IO 时的情况),但是通过拥有更多线程,您正在为您的操作系统/运行时创建额外的工作。
标签: c# multithreading process