我有每50毫秒後轟出WM_TIMER
回調函數運行,這裏面我創建一個線程只是爲了保證UI線程不阻止,這些線程我線程安全的共享內存操作使用互斥體對象。限制線程的數量從定時器
我的問題是什麼時候創建了新線程,而且之前的線程還沒有完成,他們在線WaitForSingleObject(ghMutex, INFINITE)
之後轉到了等待狀態,因爲內存中這個活動線程的數目將呈指數級增長,可能我應該這樣做,我認爲用定時器可以更好地管理頻率。
我還試圖用一個線程計數器(講述活動線程的數量),並從回調函數返回,如果計數器大於零,按我的理解,這是不是線程安全的。
我應該怎麼做,以保持只有一個線程,如果一個線程將無法獲取互斥鎖,那麼就應該終止,而不是等待隨時運行,例如。
你可以用單線程來完成,不需要WM_TIMER。你的線程會有一個主循環,在頂部它會記住使用GetCurrentTime()的開始時間,然後執行其任務。在執行它之後,檢查你是否應該:: Sleep()這個線程的剩餘時間(直到50ms),或者繼續循環。但是你不會同時執行多個線程,所以我不確定這是否是你想要的。 – marcinj
@MarcinJędrzejewski是的,我不需要在任何時候執行多個線程,順便說一句,如何將性能,因爲在這裏我有幾個GetCurrentTime()和一個IF語句在這裏。 –
你肯定是做錯了。單線程是你需要的。大概。我們不知道你的實際問題。 –