为什么单线程模型用于将UI更新为主线程?

Car*_*ina 12 qt android frameworks ui-thread ios

Qt医生说,

如上所述,每个程序在启动时都有一个线程.该线程称为"主线程"(在Qt应用程序中也称为"GUI线程").Qt GUI必须在此线程中运行.

Android文档说,

与活动和其他组件一样,服务在应用程序进程的主线程中运行

和iOS,

强烈建议不要从后台线程(例如计时器,通信等)更新UI控件等.这可能是崩溃的原因,有时很难识别.而是使用这些来强制在UI线程上执行代码(它始终是"主"线程).

为什么他们使用单线程模型来更新UI?

Ted*_*opp 23

简短的回答是,这是确保显示器不被破坏的唯一合理方法.

答案很长,允许多个线程更新UI会导致死锁,竞争条件和各种麻烦.这是Java的AWT(以及其他UI系统)所教授的痛苦教训,它允许多个线程触摸UI.例如,请参阅多线程工具包:失败的梦想?.该帖子引用(通过死链接)为什么线程是一个坏主意Threadaches.