Какие (многопоточные?) Альтернативные подходы существуют в схеме цикла событий "основной поток пользовательского интерфейса"?
Я создаю свою собственную структуру пользовательского интерфейса и у меня есть окно, в котором я могу рисовать вещи, работающие на Windows и Linux. Это означает, что я вызываю xcb_wait_for_event или GetMessage для обработки связанных с окном событий (таких как изменение размера или закрытие окна). Большинство, если не все, структуры GUI, которые я знаю, работают с одним из этих циклов событий, которые обрабатывают все события приложения в выделенном потоке цикла событий.
Напротив, просто потому, что я мог, у каждого окна был свой поток с собственным циклом событий. На обеих ОС это работает просто отлично. Это противоположно тому, что делают все остальные. Интересно, есть ли какие-то правильные описания того, как этот подход можно наилучшим образом заполнить. Все, что я прочитал, это то, что многопоточный пользовательский интерфейс - это дьявол, а основной цикл событий "Поток пользовательского интерфейса" решает так много проблем. Я просто никогда не найду объяснения или даже доказательства концепции "плохого" пути, то есть никакого "основного" потока цикла событий. Следовательно, также нет демонстрации какой-либо из стольких проблем, которые этот подход явно вызывает.
Я понимаю, что, по крайней мере, в случае с Apple OS я слегка облажался, так как их родным фреймворкам предъявляется жесткое требование "основного потока". Давайте забудем об этих деталях и сконцентрируемся на слое выше (многопоточный фреймворк пользовательского интерфейса, который абстрагируется) уровень ОС). Что именно так трудно или невозможно сделать с действительно многопоточным пользовательским интерфейсом? Насколько я могу судить, ОС (или xcb в случае Linux) отлично справляется с синхронизацией элементов пользовательского интерфейса и обеспечивает необходимую функциональность для написания многопоточной абстракции для пользовательского интерфейса.