use*_*008 0 c++ winapi multithreading timer
我遇到线程安全回调问题.
void draw_something() { /* draws something */ }
Run Code Online (Sandbox Code Playgroud)
问题是,如何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;
}
Run Code Online (Sandbox Code Playgroud)
所以window的MessageQueue会处理safethread调用,但我不认为它是否是非常有效和优雅的方法.我知道有更好的方法(也许是提升?)但我不知道.
| 归档时间: |
|
| 查看次数: |
1852 次 |
| 最近记录: |