c++物件有宣告週期;
執行緒也有宣告週期;
qthread物件的生命週期與對應的執行緒宣告週期是否一致?
執行緒物件生命週期 > 對應的執行緒宣告週期
同步型執行緒設計
-概念·執行緒物件主動等待執行緒生命期結束後才銷毀
-特點·同時支援棧和堆中建立執行緒物件
·物件銷毀時確保執行緒生命期結束
-要點·在析構函式中先呼叫wait()函式,強制等到執行緒執行結束
-使用場合
·執行緒生命期相對較短的情形
functhread::~functhread()
非同步型執行緒設計
-概念·執行緒生命期結束時通知銷毀執行緒物件
-特點·只能在堆中建立執行緒物件
·執行緒物件不能被外界主動銷毀
-要點·在run() 中最後呼叫deletelater() 函式
·執行緒體函式主動申請銷毀執行緒物件
-使用場合
·執行緒生命期不可控,需要長時間執行於後台的情形
void functhread::run()
deletelater();
}
總結:
執行緒物件生命期必須大於對應執行緒生命期
-同步型執行緒設計-->執行緒生命期較短
-非同步型執行緒設計-->執行緒生命期不可控
-執行緒類的設計必須適應具體的場合
-沒有萬能的設計,只有合適的設計
執行緒的生命期設計例項
執行緒安全的物件生命期管理
1.當析構函式遇到多執行緒 在即將析構乙個物件時,別的執行緒是否正在執行該物件的成員函式?如何保證在執行成員函式期間,物件不在另乙個執行緒被析構?在呼叫某個成員函式之前,如何確保物件還活著?析構函式會不會執行到一半?1.1執行緒安全類 多個執行緒同時訪問,表現出正確的行為 無論作業系統如何排程這些執...
muduo 執行緒安全的物件生命期管理
六 系統地避免各種指標錯誤 七 shared ptr 技術與陷阱 八 小結 當乙個物件能被多個執行緒同時看到時,那麼物件的銷毀時機就會變得模糊不清,可能出現多種競態條件 race condition 解決這些race condition是 c 多執行緒程式設計面臨的基本問題。本文試圖以shared ...
執行緒安全的物件生命期管理(三)
c 裡可能出現的記憶體問題大致有這麼幾個方面 1 緩衝區溢位 2 空懸指標 野指標 3 重複釋放 4 記憶體洩漏 5 不配對的new delete 6 記憶體碎片 正確使用智慧型指標能很容易地解決前面5個問題。1 緩衝區溢位 用vector string或自己編寫buffer class來管理緩衝區...