гибкая асинхронная операция ввода-вывода в рабочем потоке? - PullRequest
0 голосов
/ 22 января 2012

Мне известно, что Action Script не обеспечивает многопоточность, поэтому при написании приложения Flex мы ограничены работой в одном потоке.это нормально для рендеринга моего пользовательского интерфейса.

Однако при выборе flex вместо silverlight возникают некоторые вопросы:

  1. Поскольку отдельный слой пользовательского интерфейса достаточно хорош, но справедливо ли предположить, что дляAync httpservice, как операции в flex, внутренне он будет использовать некоторые рабочие потоки для управления асинхронной операцией, а затем вернуться к основному потоку?похоже, так и есть, поскольку мой пользовательский интерфейс не зависает.
  2. Может ли проигрыватель flex / flash одновременно обрабатывать несколько вызовов httpservice?(например, более одного раздела загрузки данных интерфейса пользователя одновременно.)
  3. Как насчет анимации (например, параллельная анимация) - использует ли Flash Player внутреннее использование некоторых потоков для ускорения графики или все это сделано?в потоке пользовательского интерфейса?

1 Ответ

3 голосов
/ 23 января 2012

но справедливо ли предположить, что для Aync httpservice, подобного операциям в flex, внутренне он будет использовать некоторые рабочие потоки для управления асинхронной операцией, а затем вернется в основной поток

Нет. Обработка данных ответа происходит в том же потоке, что и обновление пользовательского интерфейса. Например, если вы возвращаете 5000 объектов AMF за один вызов, Flash Player десериализует их в потоке, что приведет к зависанию пользовательского интерфейса.

Внутренне браузер может использовать потоки для управления загрузкой ответа с конечного URL. Однако после того, как ответ был возвращен и передан из браузера плагину Flash player, десериализация и обработка этих данных происходит в главном потоке.

Может ли проигрыватель flex / flash одновременно обрабатывать несколько вызовов httpservice? (например, более одной секции данных загрузки пользовательского интерфейса одновременно.)

Да. Ограничение здесь навязывается браузером в максимальном количестве одновременных HTTP-запросов, которые браузер. Это варьируется от браузера к браузеру, но, вообще говоря, это нормально (и рекомендуется) отправлять несколько запросов к внутренним службам.

Стоит ознакомиться с AsyncToken, который является основным классом Flex, используемым при обработке одновременных вызовов, обеспечивая соответствие запроса и ответа.

Имейте в виду, что большинство классов во Flex, которые используются для связи с удаленными службами (например, HttpService и RemoteObject), предоставляют свойство concurrency, которое определяет, как объект должен реагировать на множественные одновременные запросы. (Разрешение разработчику явным образом разрешить или запретить его).

Как насчет анимации (например, параллельная анимация) - использует ли Flash Player внутреннюю часть потоков для ускорения графики или все это делается в потоке пользовательского интерфейса?

Это не моя специальность, и кто-то может поправить меня. Однако я считаю, что Flex создает анимации, генерируя серию ключевых кадров, которые со временем изменяют свойства значений в UIComponent, а затем выполняет их. (Выполнение происходит в том же потоке, что и все остальное). Поэтому анимация Параллеля генерируется путем агрегирования целей для ключевых кадров и их совместного выполнения.

Например: Keyframe n at ms300 = { UIComponent1.x = 300; UIComponent2.y = 300 }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...