多線程基礎介紹
在代碼中實現多線程具有以下益處:
■ 提高應用程序的響應(GUI用戶等待問題得到解決)
■ 更有效地使用多處理器(多個處理器同時處理多個線程)
■ 改進程序結構(劃分多個獨立或半獨立的執行單元)
■ 佔用較少的系統資源(多個進程需要多個單獨資源,線程可共享進程指令和大多數進程數據,進程間通信更麻煩)
線程狀態對於每個線程是唯一的。
■ 線程ID
■ 寄存器狀態(包括PC和棧指針)
■ 棧
■ 信號掩碼
■ 優先級
■ 線程專用存儲
線程取消分爲:
■異步終止
■延遲終止(缺省)
線程同步
使用同步功能,可以控制程序流並訪問共享數據,從而併發執行多個線程。
共有四種同步模型:互斥鎖、讀寫鎖、條件變量和信號。
■ 互斥鎖僅允許每次使用一個線程來執行特定的部分代碼或者訪問特定數據。
■ 讀寫鎖允許對受保護的共享資源進行併發讀取和獨佔寫入。要修改資源,線程必須首先獲取互斥寫鎖。只有釋放所有的讀鎖之後,才允許使用互斥寫鎖。
■ 條件變量會一直阻塞線程,直到特定的條件爲真。
■ 計數信號量通常用來協調對資源的訪問。使用計數,可以限制訪問某個信號的線程數量。達到指定的計數時,信號將阻塞。