Qt 文档说,
如前所述,每个程序在启动时都有一个线程。该线程称为“主线程”(在 Qt 应用程序中也称为“GUI 线程”)。Qt GUI 必须在这个线程中运行。
Android 文档说,
与活动和其他组件一样,服务在应用程序进程的主线程中运行
和 iOS,
强烈建议不要从后台线程(例如计时器、通讯等)更新 UI 控件等。这可能是导致有时很难识别的崩溃的原因。而是使用这些来强制代码在 UI 线程(始终是“主”线程)上执行。
为什么他们使用单线程模型来更新 UI?
Qt 文档说,
如前所述,每个程序在启动时都有一个线程。该线程称为“主线程”(在 Qt 应用程序中也称为“GUI 线程”)。Qt GUI 必须在这个线程中运行。
Android 文档说,
与活动和其他组件一样,服务在应用程序进程的主线程中运行
和 iOS,
强烈建议不要从后台线程(例如计时器、通讯等)更新 UI 控件等。这可能是导致有时很难识别的崩溃的原因。而是使用这些来强制代码在 UI 线程(始终是“主”线程)上执行。
为什么他们使用单线程模型来更新 UI?
简短的回答是,这是确保显示器不损坏的唯一合理方法。
长答案是,允许多个线程更新 UI 会导致死锁、竞争条件和各种麻烦。这是 Java 的 AWT(以及其他 UI 系统)所教给我们的惨痛教训,它允许多个线程接触 UI。例如,参见多线程工具包:一个失败的梦想?. 那篇文章(通过死链接)提到Why Threads Are A Bad Idea和Threadaches。