老男孩教育每日一題-2017年3月23日-請問多執行緒與多程式的區別,在什麼時候用執行緒或程式更合適?

科技小能手發表於2017-11-12

解答:

程式:

優點:多程式可以同時利用多個CPU,能夠同時進行多個操作。

缺點:耗費資源(建立一個程式重新開闢記憶體空間)。

程式不是越多越好,一般程式個數等於cpu個數。

 

執行緒:

優點:共享記憶體,尤其是進行IO操作(網路、磁碟)的時候(IO操作很少用cpu),可以使用多執行緒執行併發操作。

缺點:搶佔資源。

執行緒也不是越多越好,具體案例具體分析,切換執行緒關係到請求上下文切換耗時。

計算機中執行任務的最小單元:執行緒。

 

IO密集型(不用cpu):多執行緒

計算密集型(用cpu):多程式

 

  • 網友精品回答:

耶穌的道路2017/03/23 10:50:40

多執行緒和多程式是兩個截然不同的概念。程式是核心分配給一個應用的相對獨立的地址空間,有著自己的堆疊地址,當然是虛擬的,這樣就保護了核心,使核心和應用隔離,個個具體的應用之間隔離,當然他們之間是可以通訊的,這取決於作業系統。

執行緒是我們程式設計師最關注的,也就是我們在具體應用中的功能實現。分為主執行緒和子執行緒,在Android開發中我們稱主執行緒為UI執行緒,在JavaEEWindows開發中就是main函式等等,既然這樣那麼什麼操作放在主執行緒中,什麼操作放在子執行緒中,大致是這樣,費時的操作和消耗資源也就是佔記憶體的操作放在子執行緒中,更新UI之類的放在主執行緒中,他們之間通過訊息傳遞實現。

像查詢資料庫、聯網上傳檔案啊,斷點續傳和下載大資料檔案啊等等操作都應該放在子執行緒中。

多執行緒的應用雖然提高了CPU的利用率,卻也帶來安全問題。熊掌和魚不可兼得,如何處理效率和安全的問題,真的是考驗一個程式設計師水平的現實問題。



本文轉自 李導 51CTO部落格,原文連結:http://blog.51cto.com/lidao/1914576


相關文章