簡單易懂的程式與執行緒詳解

classic123發表於2022-04-16

程式與執行緒詳解

本部落格分以下幾個部分來闡述程式與執行緒

1、程式的概念很抽象?那麼什麼是程式呢?

2、開啟一個程式,作業系統會做哪些工作?

3、既然程式也可以使多個程式能併發執行,為什麼還需要執行緒?

4、程式與執行緒有哪些聯絡呢?

什麼是程式?

  • 程式是計算機程式從啟動到結束的過程。
  • 那麼什麼是計算機程式呢? 我們常見的QQ、微信、英雄聯盟這些軟體都是一個計算機程式,(可以說我們從開啟QQ到關閉QQ就是一段程式)。
    不難理解,這些計算機程式是由程式碼,以及圖片、音訊、jar包等必要的資原始檔組成的。

開啟一個程式,作業系統會做哪些工作呢?

  • ①程式的ID號。當作業系統收到我們要開啟QQ程式的時候,作業系統會給QQ程式一個ID號,我們可以通過工作管理員視窗看到該程式ID
  • ②申請記憶體空間。每個程式擁有獨立的地址空間。

既然程式也可以使多個程式能併發執行,為什麼還需要執行緒?

從使用者使用的角度來看

  • 程式的併發解決了哪些問題呢?
    • 多應用同時進行,在QQ音樂聽歌的同時 還可以刷QQ空間。
    • 應用分身,這允許我們同時登入好多人的QQ號。
  • 如果我們QQ程式中只有一個執行緒,會發生什麼呢?
    • 單執行緒的程式是完全順序結構,只能在同一時間做一件事情。比如我們在使用QQ進行檔案傳輸的時候,就無法和好友發訊息 閒聊了。

從上下文狀態切換的角度來看

  • 程式的單位比較大,建立/銷燬、進行上下文切換比較浪費資源
  • 執行緒的單位比較小,建立/銷燬、上下文切換不太浪費資源
  • 所以,需要頻繁建立銷燬時,要考慮執行緒 。在需要大量計算、切換頻繁時 使用執行緒可以提高程式的響應速度 。

執行緒的引入優點很多,又有哪些問題呢?

  • 開發更加麻煩。
  • 執行緒可以共享一個程式的資源,所以共享的資料要保證安全。
  • 執行緒的執行順序,也需要保證,比如我們要給QQ好友傳送一張圖片,這篇文章傳輸過程中可能被分成了很多份小的
    資料包來傳送,這個時候QQ好友接收資料包的順序不能亂。

程式與執行緒有哪些聯絡呢?

  • 一個程式之中可以包含多個執行緒
  • 執行緒可以共享一個程式的資源

相關文章