Вопрос по android, qt, ios, frameworks, ui-thread – Почему однопоточная модель используется для обновления пользовательского интерфейса в качестве основного потока?

12

В Qt doc сказано:

As mentioned, each program has one thread when it is started. This thread is called the "main thread" (also known as the "GUI thread" in Qt applications). The Qt GUI must run in this thread.

Док Android говорит,

Like activities and the other components, services run in the main thread of the application process

И iOS,

It is strongly recommended not to update UI controls etc from a background thread (e.g. a timer, comms etc). This can be the cause of crashes which are sometimes very hard to identify. Instead use these to force code to be executed on the UI thread (which is always the “main” thread).

Почему они используют однопоточную модель для обновления пользовательского интерфейса?

Это увеличивает сложность и не имеет никакой выгоды. Смотрите такжеstackoverflow.com/questions/5544447/… Frank Osterfeld

Ваш Ответ

1   ответ
23

что дисплей не поврежден.

Длинный ответ заключается в том, что разрешение нескольким потокам обновлять пользовательский интерфейс приводит к взаимоблокировкам, состояниям гонки и всевозможным проблемам. Это был болезненный урок, преподанный AWT Java (среди других систем пользовательского интерфейса), который позволяет нескольким потокам касаться пользовательского интерфейса. Смотрите, например,Multithreaded toolkits: A failed dream?, Этот пост ссылается (через неработающие ссылки) наWhy Threads Are A Bad Idea а такжеThreadaches.

+1 за ссылку в блоге :)

Похожие вопросы