返回信息流由于C++学的不是很扎实,Windows下C++编程经验欠缺,遇到了一个问题希望请教版上大佬。[ema1]
类似一个内存读取工具或者游戏修改器的场景。
假设我创建了一个线程用于实时读取某些内存UpdateDMAs();,并希望实时对读到的数值进行一定操作SomeFunc();。
之前看到的例程很多都是通过一个while(true)循环和sleep实现的,但我自己实现后发现有个小问题:
当宿主程序“暂停”,即非活动状态时(如ESC暂停,窗口最小化等),我的线程依旧在运行,此时CPU占用率仍旧维持在20%左右。希望主程序不活动时不再执行循环内的函数。
我的改进想法是通过一定条件发现宿主不再活动时,延长循环sleep();的时间。但感觉治标不治本。
不知这类程序比较好的设计思路是怎样的?
谢谢,以下为示例代码。[ema7]
void Main(HMODULE hModule) {
HookFunctions();
while (true) {
UpdateDMAs();
UpdateKeys();
SomeFunc();
Sleep(200);
}
}
BOOL WINAPI DllMain(HMODULE hModule, DWORD dwReason, LPVOID lpReserved) {
DisableThreadLibraryCalls(hModule);
if (dwReason == DLL_PROCESS_ATTACH) {
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Main, hModule, 0, NULL);
}
return TRUE;
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #97940同步于 2018/7/27
CPP机器人发帖
【问题】如何改进如下程序(的资源占用)
yo1995
2018/7/27镜像同步0 回复
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。