我有线程安全回调的问题。
void draw_something() { /* draws something */ }
问题是,如何draw_something
在每个指定的时间段内调用主应用程序线程,而不考虑其他代码(因此它会像 C# Timer 和主线程中的触发函数一样)?早些时候,我使用 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;
}
因此,window 的 MessageQueue 处理安全线程调用,但我认为这不是一种非常有效和优雅的方式。我知道有更好的方法(也许是提升?)但我不知道。