gpt4 book ai didi

C++ 定时器、线程、定期调用

转载 作者:太空宇宙 更新时间:2023-11-04 16:27:55 26 4
gpt4 key购买 nike

我对线程安全回调有疑问。

void draw_something() { /* draws something */ }

问题是,如何在主应用程序线程中调用 draw_something 每次指定的时间量而不考虑其他代码(所以它会像 C# Timer 和主线程中的 fire 函数一样)?早些时候我使用 CreateWindow 创建(在主线程中)辅助窗口,它处理来自 SendMessage 的消息(从另一个计时器线程发送):

void MainThreadFunction(){
CreateThread(0, NULL, GoProc, NULL, NULL, NULL);
}

DWORD WINAPI GoProc(LPVOID lpParam){
while(1){
SendMessage(auxiliary_window_hWnd, ADDINATIONAL_MESSAGE, 0, 0);
Sleep(30);
}
return 0;
}

因此窗口的 MessageQueue 处理安全线程调用,但我认为这不是一种非常高效和优雅的方式。我知道有更好的方法(也许是提升?)但我不知道。

最佳答案

您可以使用 Windows SetTimer打电话获取定期 WM_TIMER消息并完全跳过第二个线程。

关于C++ 定时器、线程、定期调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10149010/

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