目前,我創建了一個簡單的執行緒來清除記憶體:
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
CreateThread(0, 0, test, 0, 0, 0);
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
代碼:
DWORD WINAPI test(LPVOID lpvParam) {
memo:
Sleep(10000);
SetProcessWorkingSetSize(GetCurrentProcess(), 102400, 614400);
goto memo;
}
有什么方法可以保護這個執行緒嗎?并防止它被一些外部程式(如 Process Hacker 2)暫停?
示例:如果執行緒正在運行,則回傳 true,如果它被外部暫停或中斷,則回傳 false 并用ExitProcess()?關閉程式
我嘗試了不同的方法,例如
std::thread
thread.join().
thread.joinable()
他們都沒有作業。
uj5u.com熱心網友回復:
防止執行緒被某些外部程式(例如 Process Hacker 2)暫停?
與其創建一個新執行緒來定期運行您的代碼,不如創建一個可等待計時器CreateWaitableTimer并使用SetWaitableTimer. 計時器在呼叫 的執行緒中運行回呼SetWaitableTimer,因此沒有其他執行緒可以暫停。
這也解決了執行緒不能創建的問題DllMain。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/528651.html
