「有時候」可以改善效能
讓平行化的程式跟其他程式有清楚的劃分
限制 critical section 的數量。
名詞定義
dead lock
雙方都在等待對方停止執行,以取得系統資源,但是沒有一方提前登出時
live lock
死結相似,死結是行程都在等待對方先釋放資源;活結則是行程彼此釋放資源又同時占用對方釋放的資源。當此情況持續發生時,儘管資源的狀態不斷改變,但每個行程都無法取得所需資源,使得事情沒有任何進展。
撰寫對程式有危險的測試情況,曾經失敗就追蹤,不可忽略。
將偽造的失敗看作是潛在的執行緒問題
不要把系統錯誤當做偶發事件,一定是程式有問題。
先讓你的非執行緒程式碼能順利運行
先做到單一執行緒正確,再考慮多執行緒的情況。
讓你的執行緒是可隨插即用的
測試程式碼可以隨意添加或刪減,可模擬不同的情況。
讓你的執行緒程式碼是可調校的
調整程式的環境參數是可以,例如執行緒的數量。
執行比處理器數量還要多的執行緒
要測試工作交換(task swapping)的情況,執行緒數量要比處理器或核心數量還要多。
在不同的平台上運行在所有目標平台上進行測試。
調整你的程式碼,使之試圖產生失敗或強制產生失敗
對程式碼加工之四種函式:wait()
、sleep()
、yield()
、priority()
(1)手動撰寫,例如增加上述四種函式呼叫。
問題:
(2)自動化
透過 Aspect-Oriented Framework (剖面導向框架)、CGLIB 或 ASM 。