『壹』 多線程和單線程
今早讀到王爍老師的文章談多線程和單線程兩種工作方式。
本以為老師想說可能是開啟多線程模式的人會在工作、生活上全面碾壓用單線程的人。因為多線程意味著可以同時處理很多事情,效率高嘛!別人花1小時做一件,我花1小時做三件,那怎麼看都是我在同一時間段內完成的更多,收獲的更多。擁有將時間折疊的能力,人生怎能不比單線程的精彩?
但讀完老師的文章我發現,我這種想法也是刻板印象,照我這個邏輯,世世代代更新後,社會上怎麼還會有單線程人存在呢?適者生存,兩類人都有,無一被淘汰!
我自己就是多線程工作模式,大多數時候我都覺得這是我的優勢,它給我掌控感,而掌控感帶來安全感。可有些時候不得不承認,會被多線程所累。
就像王爍老師說的「多線程吃虧在有彈性。能同時處理幾件事,那麼多處理一件也無妨。能者多勞,既然你不怕被打擾,那就多擾一點。」
是啊!比如最近的工作,昨日上午兩個半小時的工作時間里,我在同時處理著4-5件事情,不停地被周圍同事呼喚、詢問、扔工作到我背上。新人要帶著干,領導交辦的要急著干,一邊電話正溝通著,另一邊兒手機鈴聲已經響起了,然後桌邊還有人排隊等著......而屏幕上一早打開的那份待修改的方案,開頭已經重讀了三四遍,還一個字兒都沒改,直到臨近中午12點,才終於有了整片時間來處理。
一個頭兩個大,真感覺自己像個陀螺一樣,誰都能給上一鞭子,要求我保持轉動,別停下來。
太累了!
時間被撕碎成渣渣,而要把這些碎渣渣拼接起來,只能依靠我的大腦要提前為每件事兒留有冗餘帶寬。畢竟多線程並不是能同時處理多項事情,而是把事情拆分到多個時間段中,細看每個時間段也只處理一件事兒。
就像你想要同時吃草莓蛋糕和巧克力蛋糕,最佳策略不是同時將兩塊蛋糕都塞嘴裡,而是吃一口草莓的,再吃一口巧克力的。頭腦要留有餘力去安排這一口吃啥,那一口吃啥,這就是冗餘帶寬。
突然覺得我的這種多線程方式其實也是在鼓勵身邊人不停地把工作扔給我,因為他們覺得我有能力HOLD住,所以也就扔的自然而然,理所當然了。而只有我自己知道我是幹得有多麼不情願。
不再想重復上午的悲劇,下午我直接對臨時插進來不是很重要和緊急的工作說「不」,然後找了間空會議室,躲了出去。
暫時拋開多線程,自主營造單線程空間,全身心地投入去做些自己喜歡的事兒,這樣也不錯。
『貳』 多線程一定比單線程效率更高嗎
這個問題問的比較寬泛,如果說是否一定,答案是否定的,我大致說一下情況。另外目前最佳答案說的多進程不是多線程。
多線程並不一定快,尤其是在單核心或者CPU負荷較高的情況下,如果是純粹計算,沒有延時的操作,這是線程切換是需要時間的,不如單線程快。還有如果多線程設計不夠好,就可能有訪問沖突,加鎖死鎖等,這時候也肯定更慢。
計算機大多數情況下都是有延遲的操作,這個延遲一般人感覺不出,比如等待網路返回,訪問磁碟IO,等待用戶操作交互等,這時候使用多線程,明顯提高效率。
總結:大多數情況下多線程更好,部分時候可能更差
『叄』 單線程和多線程的區別
多線程和單線程本質區別是:
(1)多線程的產生並不是因為發明了多核CPU甚至現在有多個CPU+多核的硬體,也不是因為多線程CPU運行效率比單線程高。單從CPU的運行效率上考慮,單任務進程及單線程效率是最高的,因為CPU沒有任何進程及線程的切換開銷,
(2)實際上,多線程的出現主要為了解決IO設備的讀寫速度往往比CPU的處理速度慢造成的單線程程序運行阻塞問題,一個極端的例子就是如果你需要用戶在鍵盤上輸入一個數據,當用戶沒有輸入前,單線程程序就阻塞了,多線程程序就可以放個音樂或繼續干一些程序中除了鍵盤輸入外的工作,因此,多線程能提高因程序由於等待某個資源阻塞時其他資源的利用率(是利用率不是效率)。
(3)因此多線程與單線程的最大區別,多線程程序能在等待某個IO操作時,繼續完成非這個IO的其他工作,有利於提高完成整個任務的效果和速度。此外,多線程程序與單線程程序對程序設計也有不同的流程和結構,多線程需要考慮對靜態變數等資源的操作互鎖及程序執行的同步問題。
『肆』 單線程和多線程測速哪個真實
多線程。多線程比較准,可以佔用最大的帶寬,測試出來比較准。多線程適用於復雜任務,並發任務,往往響應需要一定的時間,這時候通過調用多個線程,同時處理一些任務從而提高速度。
『伍』 劍三是單線程還是多線程好
多線程好。網3在運行的時候默認使用的線程是單線程,也就是只使用CPU的一個線程進行游戲,哪怕CPU有32個線程,劍網3還是只用了其中的一個,所以,修改線程數,可以讓CPU得到更好地利用。多線段更好用。
『陸』 多線程與單線程的優缺點
單線程就是進程只有一個線程
多線程就是進程有多個線程
多線程處理的優點
同步應用程序的開發比較容易,但由於需要在上一個任務完成後才能開始新的任務,所以其效率通常比多線程應用程序低。如果完成同步任務所用的時間比預計時間長,應用程序可能會不響應。多線程處理可以同時運行多個過程。例如,文字處理器應用程序在您處理文檔的同時,可以檢查拼寫(作為單獨的任務)。由於多線程應用程序將程序劃分成獨立的任務,因此可以在以下方面顯著提高性能:
多線程技術使程序的響應速度更快,因為用戶界面可以在進行其他工作的同時一直處於活動狀態。
當前沒有進行處理的任務可以將處理器時間讓給其他任務。
佔用大量處理時間的任務可以定期將處理器時間讓給其他任務。
可以隨時停止任務。
可以分別設置各個任務的優先順序以優化性能。
是否需要創建多線程應用程序取決於多個因素。在以下情況下,最適合採用多線程處理:
耗時或大量佔用處理器的任務阻塞用戶界面操作。
各個任務必須等待外部資源(如遠程文件或 Internet 連接)。