我如何才能知道我可以使用的最大线程数?我是编程新手,所以我想弄清楚我需要知道什么。我有 950 GB 的文件要从 Amazon S3 下载。我在想我可以使用两个线程,每个线程下载一半的文件,并行运行。
我希望通过多线程处理我的应用程序来加快从 Amazon S3 下载批量数据的速度,但最好首先知道我的计算机是否支持多线程。
计算机规格:
- 型号:MacBook(13 英寸,2010 年中,A1342)
- 处理器:2.4 GHz 英特尔酷睿双核处理器
- 内存:8 GB 1067 MHz DDR3
- 软件:MacOS Sierra 10.12.6
该处理器非常老旧,已停产,因此不支持英特尔超线程。我不确定它是否支持多线程。但如果它可以支持多线程,它可以支持多少个线程,如果我使用太多线程,会对性能产生影响吗?
如果我错了,请纠正我,但我读过非超线程核心只能支持 1 个线程,所以我想我的处理器也许可以支持最多 2 个线程,那么之后的任何线程的影响都会忽略不计。
答案1
您的问题中有几个错误的假设,所以让我在这里澄清一下:
- 即使在单核 CPU 上也可以实现多线程。执行只是在时间上分割,因此在任何给定时刻都有 1 个活动线程,但总体线程执行是并行的。
- 多线程并不等同于加速。如果设计不当,多线程应用程序总是比单线程应用程序慢几十倍甚至几百倍。
- 99%的外网下载都不依赖多线程。可能值得一看的是多范围 HTTP 下载,就像在拨号调制解调器时代的 NetAnts、ReGet 等应用程序中实现的那样。但是,由于各种网络策略和所涉及的服务器,无法保证多范围下载会比常规下载更快。
所以,总而言之。你肯定要收集应用中的指标:最慢的操作是什么?然后重新设计它以获得更快的速度。
答案2
我如何才能知道我可以使用的最大线程数?
Intel Core Duo 拥有 2 个线程,因为它拥有 2 个核心单线程处理器。每个核心都具有单线程能力。
但是如果它可以支持多线程,那么它能支持多少个线程,如果我使用太多线程会不会对性能产生影响?
它支持2个线程。
所以我在想也许我的处理器可以支持最多 2 个线程,那么此后的任何线程的影响都会忽略不计。
它无法处理超过 2 个线程。由于硬件原因,您只能生成 2 个线程,因此您的多线程应用程序将只有两个线程。