gpt4 book ai didi

c++ - GetAsyncKeyState() 占用大量 CPU?我使用正确吗?

转载 作者:行者123 更新时间:2023-11-30 03:01:52 25 4
gpt4 key购买 nike

我在我的一个简单的乒乓球游戏中使用 GetAsyncKeyState() 来检查用户是否按下了箭头键。我在网上读到你需要以某种方式使用这个功能,但我发现它非常占用 CPU(占用了我 50% 的 CPU!)。这相当令人不安,然而,经过一番尝试后我发现如果我添加一个 sleep(1); 然后 CPU 使用率下降到 0% 而一切仍然正常。必须有更好的方法来使用此功能,或者至少有更好的方法来降低 CPU 使用率。

如有任何帮助,我们将不胜感激!

我的代码:

while(true)
{
for(i = 8; i < 191; ++i)
{
if(GetAsyncKeyState(i) == -32767)
{
if(i == VK_LEFT)
// do stuff
else if(i == VK_RIGHT)
// do stuff
else if(i == VK_UP)
// do stuff
else if(i == VK_DOWN)
// do stuff
}
}
Sleep(1);
}

最佳答案

并不是说 GetAsyncKeyState 占用大量 CPU;就是你一直在尽可能快地调用它。当你在无限循环中运行时,这相当于说 i++ 是 CPU 密集型的。

您应该使用 GetMessage 等待直到您实际输入,或者如果这还不够好(因为您可能还想更新一些动画而不等待消息),那么您应该选择一些轮询间隔并使用类似 MsgWaitForMultipleObjects 的东西(或使用 SetTimer 创建频繁重复的计时器消息)。

关于c++ - GetAsyncKeyState() 占用大量 CPU?我使用正确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10678583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com