筆記,多線程,據說5-10個線程是合理的原因

這只是從csdn 上網友的回答摘錄:

http://bbs.csdn.net/topics/10211932

其實有這么一個經驗公式,一個進程所擁有的線程個數合理的是:CPU的個數的兩倍再加二,沒有理由說你不可以產生更多的線程,但是線程也是要占用資源的,而且10個線程和100個線程比起來,不見得速度就可以快,搞不好因為線程間的任務切換,速度還會要慢一些的。


一般是從服務器方考慮,服務器會對這方面做限制,你客戶端并沒有限制,但是只要服務器不給你用,你多開了也白費。


現在多數網站都支持多線程下載,但是有些網站為了提供給更多的帶寬給新下載的用戶,防止某個IP在下載的時候占用太多的帶寬,會有意地中斷部分連接,以控制流量.

正所謂“欲速則不達”,如果盲目地增加進程的數量,會給自己的計算機和服務器帶來巨大的CPU處理時間和內存的開銷,就會造成服務器崩潰,完全無法響應任何請求,自然也就無法下載了。即使沒有崩潰,過多的進程也會使服務器花費許多不必要的資源在進程之間的管理和協調上,每個進程發送數據的實際效率反而下降。

現在,使用ADSL、專線和寬帶網等高速接入的人也越來越多,那么,這些用戶是不是也應該以完全使用帶寬為標準來調節下載的進程數呢?答案也是否定的。

第一,要考慮服務器的負載能力,如果把服務器“拖”垮了,大家都沒得下,相信“吃快弄破碗”的道理不難理解。

第二,通常一條高速接入的線路是供一個局域網或一個小區(特別是寬帶網)使用的,在沒有使用帶寬限制的情況下,帶寬是由各用戶共享的,如果大家都使用多進程來搶占帶寬就只會惡性循環造成代理服務器死機或網絡阻塞。

第三,在高速的情況下,多進程下載會使硬盤在為每個進程記錄數據時頻繁換道,既大大增加了CPU占用,又嚴重降低了硬盤壽命。解決辦法除了減少進程數量以外(一般5個進程已經足夠),還可以增大內存緩沖的容量,在網絡螞蟻和網際快車里,通過“選項→參數設置→高級→自動保存任務每隔?KB”和“工具→選項→常規→把數據寫入到磁盤每當接收到?KB”都可以很輕松地調節,根據機器配置和網絡速度選擇即可。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 又來到了一個老生常談的問題,應用層軟件開發的程序員要不要了解和深入學習操作系統呢? 今天就這個問題開始,來談談操...
    tangsl閱讀 4,172評論 0 23
  • 從三月份找實習到現在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發崗...
    時芥藍閱讀 42,366評論 11 349
  • 經典鏈接: 1.android最全知識點 2.android開源項目 3.啟艦android開發 4.java面試...
    this_is_for_u閱讀 456評論 1 8
  • 最近Yo哥也開始追劇了,一部名為《深夜食堂》的情景劇在網絡上開播了。 這原是日本的一位漫畫家安倍夜郎的漫畫作品,起...
    Yo哥時間閱讀 416評論 0 4
  • 梨花又開放/大漠 梨花又開放,花雨漫天揚。 慈母搖紡車,玩兒惹花香。 日子蕩呀蕩,樹下不見娘。 落一地思念,潸潸憶故鄉。
    大漠qxy閱讀 467評論 3 0