0

我想出自己的 UI 框架,并有一个窗口,我可以在其中绘制在 Windows 和 Linux 上工作的东西。这意味着我调用 xcb_wait_for_event 或 GetMessage 来处理与窗口相关的事件(例如调整窗口大小或关闭窗口)。我所知道的大多数(如果不是所有)GUI 框架都使用这些事件循环之一,这些事件循环在专用事件循环线程中处理所有应用程序事件。

相反,仅仅因为我可以,我让每个窗口运行自己的线程和自己的事件循环。在这两个操作系统上,这都很好。这与其他人的做法相反。我想知道如何最好地填充这种方法是否有任何适当的描述。我所读到的是多线程 UI 是魔鬼,主事件循环“UI 线程”解决了很多问题。我只是找不到“坏”方式的解释甚至概念证明,即没有“主”事件循环线程。因此,也没有证明这种方法显然会导致如此多的问题。

我知道至少在 Apple 操作系统的情况下,我被轻微搞砸了,因为它们的原生框架有一个硬的“主线程”要求。让​​我们忘记那个细节,专注于上面的层(一个抽象的多线程 UI 框架操作系统层)。真正的多线程 UI 究竟有什么困难或不可能做到的?据我所知,操作系统(或 Linux 中的 xcb)在同步 UI 方面做得非常好,它提供了实际为 UI 编写多线程抽象的必要功能。

4

0 回答 0