請避免直接使用Thread

2021-08-18 16:19:47 字數 421 閱讀 7893

xiongwanping 2018.04.12

本文件是為了引出baselooper框架做下鋪墊,先提出問題,後面會給出解決辦法。

linux(包括linux,android,osx,ios)和windows都提供了執行緒函式,但其粒度太大,比如pthread_create,只是把執行緒建立並跑起來,然後就沒有更細緻的操作介面了,使用起來是不太方便的。很多執行緒中執行過程中都需要和其他執行緒或元件進行通訊,對這個常見的需求,thread類介面沒有直接提供有效的辦法。

大多數threadentry的簡要實現如下

threadentry(..)

while(!stop)

這種做法簡單,但缺少統一規劃,**看起來也不優雅。

如果程式中需要大量的輔助線程,則每個執行緒的**實現都不盡相同。可能充滿令人疑惑的加鎖**

未完待續

盡量避免直接使用 kill 9

kill 9 沒有給程序留下善後的機會 1 關閉socket鏈結 2 清理臨時檔案 3 將自己快要給銷毀的訊息通知給子程序 4 重置自己的終止狀態。通常,應該傳送 15,等一兩秒鐘,如果沒有效果,傳送2,如果還不行,傳送1。總之,在使用 kill 9 前,你應該先使用 kill 15,給目標程序乙個...

使用屬性 避免將資料成員直接暴露給外界

學習研究.net的早期,經常碰到一些學習c net的朋友問,要屬性這種華而不實的東西做什麼?後來做專案時也時常接到team裡的人的抱怨反饋,為什麼不直接放乙個public欄位?如 class card 而非要做乙個private欄位 public屬性?class card set 我記得在早期的乙個...

使用ThreadPool代替Thread

執行緒的空間開銷 執行緒核心物件。包含上下文資訊。32位系統占用700位元組 執行緒環境塊。包括執行緒的異常處理鏈。32位系統占用4kb 使用者模式棧。儲存方法的引數 區域性變數和返回值 核心模式棧。呼叫作業系統的核心模式函式時,系統會將函式引數從使用者模式棧複製到核心模式棧。32位系統占用12kb...