use*_*447 1 c++ user-interface multithreading wxwidgets
我制作了一款使用游戏循环的游戏.现在我想在wxWidgets中为这个游戏实现一个GUI.
问题是,当我初始化GUI时,程序的控制仍然在GUI循环上,并且不会进入游戏循环.
那么,我可以让GUI在自己的线程上运行吗?
您可以,但保留所有代码,这些代码与主线程/ EDT(事件调度线程)上的GUI交互.对GUI元素的并发访问不是设计意图,而是会导致问题.相反,将游戏循环放入a wxThread并从那里开始适当的事件.然后可以在EDT上处理这些事件以更新GUI或渲染帧.
另一个解决方案是,在主线程上调用游戏循环的单次迭代,使用wxTimer.
注意:
wxTimer完全支持频率限制和更新事件的合并.在一个单独的线程中,您需要在所需周期/迭代时间的剩余时间内休眠或等待由主线程触发的信号量.wxMutex.最好,你也可以使用std::mutex并std::thread从C++ 11.例子:
| 归档时间: |
|
| 查看次数: |
814 次 |
| 最近记录: |