
我如何找出可以使用的最大線程數?我是程式設計新手,所以我想弄清楚我需要知道什麼。我有 950 GB 的檔案需要從 Amazon S3 下載。我想我可以使用兩個線程,每個線程下載該數量的一半,並行運行。
我希望透過多執行緒應用程式來加快從 Amazon S3 下載批量資料的速度,但最好先知道我的電腦是否支援多執行緒。
電腦規格:
- 型號:MacBook(13 英寸,2010 年中,A1342)
- 處理器:2.4 GHz 英特爾酷睿雙核
- 記憶體:8 GB 1067 MHz DDR3
- 軟體:MacOS Sierra 10.12.6
該處理器非常舊且已經停產,因此不支援Intel超執行緒。我不確定多線程是否有好處。但是如果可以支援多線程的話,可以支援多少個線程,如果使用太多線程會對效能產生影響嗎?
如果我錯了請糾正我,但我讀過非超線程核心只能支援 1 個線程,所以我想也許我的處理器最多可以支援 2 個線程,那麼之後的任何更多線程的影響都可以忽略不計。
答案1
您的問題中有幾個錯誤的假設,所以讓我在這裡澄清一下:
- 即使在單核心 CPU 上也可以進行多執行緒處理。執行只是按時間分割,因此在任何給定時刻都有 1 個執行緒處於活動狀態,但總體執行緒執行是並行的。
- 多執行緒並不等於加速。如果設計天真,多執行緒應用程式總是比單執行緒應用程式慢數十甚至數百倍。
- 99%的情況下從外網下載並不依賴多執行緒。多範圍 HTTP 下載可能值得一看,就像 NetAnts、ReGet 和其他撥號數據機時代的應用程式中實現的那樣。但是,由於網路策略和所涉及的伺服器不同,無法保證多範圍下載會比常規下載更快。
所以,畢竟。您肯定必須在應用程式中收集指標:什麼是最慢的操作?然後重新設計它以獲得更快的速度。
答案2
我如何找出可以使用的最大線程數?
Intel Core Duo 有 2 個線程,因為它有 2 個核心單線程處理器。每個核心都具有單線程的能力。
但是如果可以支援多線程的話,可以支援多少個線程,如果使用太多線程會對效能產生影響嗎?
它支援2個線程。
所以我想也許我的處理器最多可以支援 2 個線程,那麼之後的任何更多線程的影響都可以忽略不計。
它無法處理超過 2 個線程。您的多線程應用程式將只有兩個線程,因為由於硬體原因您只能產生 2 個線程。