Есть ли причина, по которой весь рисунок UIKit или чертеж AppKit выполняется в основном потоке?Почему пользовательский интерфейс нарисован на основной теме?
ответ
«Поскольку многопоточный рисунок быстро становится слишком сложным/conf использование "- это только половина ответа.
Другим серьезным препятствием для многопоточного управления пользовательским интерфейсом является обработка событий. Смешивание обработки событий в параллельный чертеж, в частности. Вы должны каким-то образом смешивать рисунок с хаосом, который является обезьяной, избивающей экран/клавиатуру/мышь, эффективно поддерживая понятие целостности транзакций.
Уже сейчас это невозможно без параллелизма.
Это основная структура всех GUI рисунка должно быть сделано на одном потоке, Доступ к экрану для добавления элемента и рисунок не многопоточный процесс
Представьте себе случай, когда у вас есть 10 потоков, каждый из их пытается рисовать и или перемещать элементы на экране, что позволит создать ип детерминированных ошибок и проблем, которые были бы очень трудно обрабатывать и/или найти
Также читайте здесь Why are most UI frameworks single threaded?
+1: простой ответ, который попадает в точку. Фактически вы могли управлять пользовательским интерфейсом из нескольких потоков, но все могло бы легко выйти из рук. –
Вы можете реализовать рисунок графического интерфейса многопоточным способом, но я ожидаю, что к тому моменту, когда вы добавите блокировку, чтобы остановить два потока от попыток нарисовать одно и то же в одно и то же время или разные вещи в одном и том же месте одновременно, вы потеряют все преимущества за счет добавления блокировки накладных и неприятных неопределенных ошибок. – JeremyP
- 1. Пользовательский интерфейс работает на отдельной теме?
- 2. Как определить, что работает на главной теме + замедлять пользовательский интерфейс?
- 3. Задачи бенчмаркинга на основной теме
- 4. UI не обновляется в основной теме
- 5. Async wait block Основной пользовательский интерфейс
- 6. iOS - когда вызывать пользовательский интерфейс Изменение функций в главной теме
- 7. Пользовательский маркер не нарисован на некоторых устройствах
- 8. Создание основной пользовательский интерфейс с Tkinter-питоном
- 9. Как сделать длинную операцию в фоновом потоке, а затем позже обновить пользовательский интерфейс в основной теме
- 10. dispatch_get_main_queue() в основной теме
- 11. Пользовательский вид не полностью нарисован
- 12. Почему спать на основной теме необходимо для запуска примера верблюда
- 13. NullPointerException в основной теме
- 14. Работает ли основной пользовательский интерфейс и AsyncTask на одном потоке?
- 15. Firebase Synchronous XMLHttpRequest на основной теме устарел
- 16. Почему только пользовательский интерфейс разрешает изменять пользовательский интерфейс?
- 17. Запуск закрытия по основной теме
- 18. Почему пользовательский интерфейс продолжает мерцать?
- 19. Вызов методов, которые работают на основной теме
- 20. startActivity должен выполняться на основной теме?
- 21. Создание нового обработчика на основной теме ApplicationTestCase
- 22. Запуск обработчика завершения NSURLSession в основной теме
- 23. Android - Запустить ответный вызов в основной теме
- 24. Как отключить пользовательский интерфейс Alloy UI в пользовательской теме Liferay?
- 25. Параллельность - возврат к основной теме
- 26. Код запуска в основной теме
- 27. GCD возвращается к основной теме
- 28. Доступ к основной теме, Как это работает?
- 29. Многопоточный пользовательский интерфейс, неспособный BeginInvoke
- 30. Публикация NSNotification по основной теме
Возможный дубликат [Почему большинство пользовательских интерфейсов однопоточных?] (Http://stackoverflow.com/questions/5544447/why-are-most-ui-frameworks-single-threaded) –