IO密集型和cpu密集型的多執行緒總結
執行緒是否越多越好? 分析如下:
一個計算為主的程式(專業一點稱為CPU密集型程式)。多執行緒跑的時候,可以充分利用起所有的cpu核心,比如說4個核心的cpu,開4個執行緒的時候,可以同時跑4個執行緒的運算任務,此時是最大效率。
但是如果執行緒遠遠超出cpu核心數量 反而會使得任務效率下降,因為頻繁的切換執行緒也是要消耗時間的。
因此對於cpu密集型的任務來說,執行緒數等於cpu數是最好的了。
如果是一個磁碟或網路為主的程式(IO密集型)。一個執行緒處在IO等待的時候,另一個執行緒還可以在CPU裡面跑,有時候CPU閒著沒事幹,所有的執行緒都在等著IO,這時候他們就是同時的了,而單執行緒的話此時還是在一個一個等待的。我們都知道IO的速度比起CPU來是慢到令人髮指的。所以開多執行緒,比方說多執行緒網路傳輸,多執行緒往不同的目錄寫檔案,等等。
此時 執行緒數等於IO任務數是最佳的。
相關推薦
多執行緒之IO密集型和CPU密集型
CPU密集型(CPU-bound) CPU密集型也叫計算密集型,指的是系統的硬碟、記憶體效能相對CPU要好很多,此時,系統運作大部分的狀況是CPU Loading 100%,CPU要讀/寫I/O(硬碟/記憶體),I/O在很短的時間就可以完成,而CPU還有許多運算要處理,CPU Loading很高
IO密集型和cpu密集型的多執行緒總結
執行緒是否越多越好? 分析如下: 一個計算為主的程式(專業一點稱為CPU密集型程式)。多執行緒跑的時候,可以充分利用起所有的cpu核心,比如說4個核心的cpu,開4個執行緒的時候,可以同時跑4個執行緒的運算任務,此時是最大效率。 但是如果執行緒遠遠超出cpu核心數量 反而會使得任
IO密集型和CPU密集型
CPU密集型(CPU-bound)CPU密集型也叫計算密集型,指的是系統的硬碟、記憶體效能相對CPU要好很多,此時,系統運作大部分的狀況是CPU Loading 100%,CPU要讀/寫I/O(硬碟/記憶體),I/O在很短的時間就可以完成,而CPU還有許多運算要處理,CPU Loading很高。在多重程式系統
junit測試和main方法多執行緒中遇到的問題
利用Junit測試多執行緒時經常遇到任務執行不完就會停止,下面是我的任務執行緒類: package timerTest; import java.io.BufferedReader; import java.io.BufferedWriter; import java.i
Java併發程式設計(6):Runnable和Thread實現多執行緒的區別(含程式碼)
Java中實現多執行緒有兩種方法:繼承Thread類、實現Runnable介面,在程式開發中只要是多執行緒,肯定永遠以實現Runnable介面為主,因為實現Runnable介面相比繼承Thread類有如下優勢: 1、可以避免由於Java的單繼承特性而帶來的侷限; 2、增強程式的健壯性,程式碼能夠被多個執行
網路程式設計和併發之多執行緒程式設計
多執行緒threading 執行緒與程序的區別可以歸納為以下4點: 1)地址空間和其它資源(如開啟檔案):程序間相互獨立,同一程序的各執行緒間共享。某程序內的執行緒在其它程序不可見。 2)通訊: 程序間通訊 IPC,執行緒間可以直接讀寫程序資料段(如全域性變數)來進行通訊——
Java多執行緒-執行緒池ThreadPoolExecutor構造方法和規則 Java多執行緒-執行緒池ThreadPoolExecutor構造方法和規則
Java多執行緒-執行緒池ThreadPoolExecutor構造方法和規則 2017年05月03日 17:15:37 閱讀數:40542 為什麼用執行緒池 部落格地址 http://blog.csdn.ne
Posix執行緒和C++11多執行緒學習
在C++11引進多執行緒之前,我們不得不使用POSIX pthreads,因此本文主要包括三部分: POSIX多執行緒實踐 C++11 多執行緒實踐 類成員函式作為執行緒函式的實現 一、POSIX多執行緒實踐 一個簡單執行緒的實現 建立一個執行緒,該執
老男孩14期自動化運維day9隨筆和作業(多執行緒批量管理主機)(三)
通過多執行緒實現基於paramiko的ssh,sftp的批量管理主機功能 需求: 1.主機分組 2.登入後顯示主機分組,選擇分組後檢視主機列表 3.可批量執行命令、傳送檔案,結果實時返回 4.主機使用者名稱密碼可以不同 只能執行paramiko.exec_command能執行的指令,
老男孩14期自動化運維day9隨筆和作業(多執行緒批量管理主機)(二)
執行緒與程序 1.執行緒: os呼叫CPU進行運算的最小單位,被包含在程序中(就是一堆指令) 小知識點 運算速度比較:CPU>RAM>>磁碟 CPU 稍大於RAM(記憶體),RAM遠大於磁碟 每一個程式的記憶體都是獨立的,不能互相訪問 單核CPU只
老男孩14期自動化運維day9隨筆和作業(多執行緒批量管理主機)(一)
1.paramiko 通過python實現模擬ssh批量登入 在linux系統上 ssh本身也可以用來傳檔案,例如:使用 scp -r /opt/test [email protected]_host:/opt 命令也可以執行傳輸檔案到遠端主機。 (小知識點:Linux中 l.可以
集合、IO操作、列舉、多執行緒
一、集合 /** * lambda過濾 */ @Test public void testLambda(){ Person person1
【Java併發程式設計】之六:Runnable和Thread實現多執行緒的區別(含程式碼)
Java中實現多執行緒有兩種方法:繼承Thread類、實現Runnable介面,在程式開發中只要是多執行緒,肯定永遠以實現Runnable介面為主,因為實現Runnable介面相比繼承Th
PyQt5中非同步重新整理UI和Python中的多執行緒總結
目前任務需要做一個介面程式,PyQt是非常方便的選擇,QT豐富的控制元件以及python方便的程式設計。近期遇到介面中執行一些後臺任務時介面卡死的情況,解決了在這裡記錄下。 PyQt PyQt簡介 PyQt是Qt的python介面,P
生產者消費者問題 虛擬碼和C語言多執行緒實現
生產者消費者問題是作業系統中的一個經典的問題。 他描述的是一個,多個生產者與多個消費者共享多個緩衝區的事情,具體的定義百度。 然後看了作業系統的書籍如何解決書上給的虛擬碼是這樣的 item B[k]; semaphore empty; empty
C#.net同步非同步SOCKET通訊和多執行緒總結(5)tcp傳送和接受的程式碼
基於TCP協議的傳送和接收端 TCP協議的接收端 using System.Net.Sockets ; //使用到TcpListen類 using System.Threading ; //使用到執行緒 using System.IO ; //使用到StreamReader類 int port = 800
同步非同步SOCKET通訊和多執行緒總結
同步套接字通訊 Socket支援下的網上點對點的通訊服務端實現監聽連線,客戶端實現傳送連線請求,建立連線後進行傳送和接收資料的功能 伺服器端建立一個socket,設定好本機的ip和監聽的埠與socket進行繫結,開始監聽連線請求,當接收到連線請求後,傳送確認,同
Java中 Thread和Runnable實現多執行緒的區別和聯絡
Java有兩種方式實現多執行緒,第一個是繼承Thread類,第二個是實現Runnable介面。他們之間的聯絡: 1、Thread類實現了Runable介面。 2、都需要重寫裡面Run方法。 他們之間的區別“ 1、實現Runnable的類更具有健壯性,避免了單繼承的侷限。 2
多核和單核中多執行緒及單執行緒的特點
關鍵詞:單執行緒;多執行緒;執行緒同步;優先順序 “Andy Grove giveth, and Bill Gates taketh away”是流行在業界的一句諺語,它描述了一個有趣的現象:無論處理器能夠提供多高的效能,軟體都能夠將它們統統“消化”掉。在過去幾十年裡
windows和linux下多執行緒的一些區別
我認為linux的多執行緒不如windows。理由如下:一、功能WaitForSingleObject在linux下可以用pthread_cond_wait來替代實現,但是pthread_cond_wait不能用來等待thread handle。要等待thread handl