有没有办法将wxWidget GUI传递给wxThread
Is there a way to pass the wxWidget GUI to a wxThread?
我做了一个使用游戏循环的游戏。现在我正在尝试在wxWidgets中为这个游戏实现一个GUI。
问题是,当我初始化 GUI 时,程序的控制仍然在 GUI 循环中,不会进入游戏循环。
那么,我可以让 GUI 在自己的线程上运行吗?
可以,但保留所有代码,这些代码与 GUI 交互的主线程/EDT(事件调度线程)上。对 GUI 元素的并发访问不是设计使然,并且会导致问题。相反,将游戏循环放入wxThread
并从那里触发适当的事件。然后,可以在 EDT 上处理这些事件以更新 GUI 或呈现帧。
另一种解决方案是,使用 wxTimer
在主线程上调用游戏循环的单次迭代。
注意:
- 如有必要,限制游戏循环或合并事件。
wxTimer
确实完全支持按频率限制和合并更新事件。在单独的线程中,您需要在所需周期/迭代时间的剩余时间内休眠,或者等待由主线程触发的信号量。 - 实现访问以与同步对象(如
wxMutex
)共享游戏状态等数据。最好改用 C++11 中的std::mutex
和std::thread
。
例子:
- http://wiki.wxwidgets.org/Inter-Thread_and_Inter-Process_communication
- http://wiki.wxwidgets.org/Making_a_render_loop
相关文章:
- C++GTKMM gui循环依赖关系
- QTcpSocket在不阻塞GUI的情况下重新连接到服务器
- 我的程序有一个保存配置文件的GUI,如何双击此配置文件以直接加载带有配置数据的GUI?
- 在哪里放置我的函数?进入我的母语 Gui 还是进入我的演示者?
- 如何在带有 gdb GUI 前端的 ARM gdbserver 的 PC 上执行远程 gdb 会话?
- 在 Gui Win32 中创建子窗口C++
- 如何防止 std::thread 在 QT 中冻结 GUI?
- 调试控制台 ChessEngine.exe "used"在另一个应用程序(国际象棋 GUI)中
- 更改 Windows GUI 中静态文本框的字体大小
- 我不知道如何使用代码块win32 gui
- Qt GUI使用Qfiledialogbox和qlabel显示视频,这是我的代码
- QtConcurrent - 在发布到 UI 线程的数千个结果中保持 GUI 响应
- 德尔福在回调中出现 GUI 问题
- 从 GUI 文件资源管理器执行程序,并且不生成终端
- 线程和 GUI 处理
- C++ WinAPI[GDI].自定义 gui 正确重绘
- Qt,操作缓慢时不要冻结GUI输入元素
- GCP 或 AWS 是否支持 C++ 和 GUI 应用程序开发?
- 有没有办法将wxWidget GUI传递给wxThread
- 多线程:如何在wxthread中使显示图像的GUI线程和处理图像同步的工作线程无阻塞