視窗a建立兩個執行緒t1,t2,在onclose函式中呼叫了terminatethread結束這兩個執行緒,發現最後程式沒有正常返回。最後定為是這個函式沒有正常結束執行緒。
之後改用設定標誌位讓程序自己退出的方法,在軟體中產生了死鎖。
//a執行緒 其中有一部分**
while(!bexit)
bexitsuccess = true;
//主線程中設定a的退出標誌
bexit = true;
while(!bexitsuccess);
會有某乙個時刻,beixt = true時執行到updatewindow();這裡updatewindow();是乙個阻塞函式,a等待主線程處理wm_pait訊息。而現在主線程正在處理wm_close訊息,導致死鎖。因此可以把繪圖的部分封裝到乙個draw函式中,而不用onpaint()進行重繪,從而繞開了訊息機制
解決了死鎖問題。就可以直接用waitforsingleobject來等待執行緒返回,這樣更加優雅點
生活無處不bug
人生很難沒有bug問題,所以就得學會debug。我就舉我遇到過的幾個例子吧。1 廁所反味bug 把師傅們都找來了,結果沒有找到根本原因,絕望。後通過上網查詢,尋找可能點,終於通過排除法找到問題的根本在於馬桶的後面有乙個小孔,堵住了就沒有味道了。2 暖氣不熱bug 採用常用方法找問題根本,比如放氣,結...
再次改程式BUG
char型的字串,一定不能直接 或 要用strcmp和strcpy。sqlite3資料庫不支援變數,所以要先把命令,用sprintf格式化一下。查詢錯誤 1,在不同地方printf列印資訊,檢視是否是自己想要的結果。2,如果程式不長,時間複雜度不大,可以嘗試帶一些特殊值進去,一步步檢視。3,gdb除...
自我的bug修復之旅 S1W3
我以為今天周四.咳,還是不要找藉口的好 不過到今天貌似剛好一周 從開始到現在,我差不多寫了個五個python檔案了,四個爬蟲,乙個自動化測試。在寫的過程中,遇到過各種各樣的問題,但是我一直沒有去仔細看過文件,自己根據報錯判斷,用不同的 去嘗試。然後,一下午過去了,最終只是寫了十幾行 在後來的某一天,...