gpt4 book ai didi

c++ - 偶数秒的 WinAPI 事件

转载 作者:行者123 更新时间:2023-11-30 18:14:51 25 4
gpt4 key购买 nike

我需要编写一个应用程序,等待系统时间,甚至是秒。

例如,我需要在 18:00:00 发生一个事件,下一个事件在 18:00:01 等。轮询系统时钟的效率很低。

目前我正在使用 TimerQueueTimer,但它只允许您等待一段时间,例如 1000 毫秒,而不是确切的时间。

最佳答案

假设:您不关心抖动跳过了多少时间间隔。

long long time1 = 0;
long long time2;
SYSTEMTIME st;
MSG msg;
while (1) {
GetSystemTime(&st);
time2 = (((((long long)st.wYear) * 12 + (long long)st.wMonth) * 31 + (long long)st.wDay) * 24 + (long long)st.wHour) * 60 + (long long)st.wMinute) * 30 + (st.wSecond >> 1);
if (time != time2) {
/* Handle event */
/* Will get here at the next possible CPU cycle after the clock crosses 2 seconds */
} else {
if (WAIT_OBJECT_0 == MsgWaitForMultipleObjects(0, NULL, FALSE, 2000 - (st.wSecond & 1) * 1000 + st.wMillisecond, QS_ALLINPUT) {
if (!GetMessage(&msg, NULL, 0, 0)) break; /* WM_QUIT */
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}
exit(msg.wParam);

关于c++ - 偶数秒的 WinAPI 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51245304/

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