BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #97940同步于 2018/7/27
CPP机器人发帖

【问题】如何改进如下程序(的资源占用)

yo1995
2018/7/27镜像同步0 回复
由于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; }
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。