Flex Threading / асинхронное поведение - PullRequest
4 голосов
/ 13 апреля 2011

Является ли Flex однопоточным и асинхронным?Если да, то как модель программирования может вести себя в обоих направлениях?Пожалуйста, объясните мне пример, я загнан в угол с этим.

Ответы [ 5 ]

3 голосов
/ 13 апреля 2011

Правильнее будет сказать Flash вместо Flex. Flex - это просто фреймворк, и такие фундаментальные понятия, как многопоточность и асинхронность, связаны с технологией, то есть Flash.
Да, Flash является однопоточным: вы не можете создавать потоки самостоятельно. Но есть некоторые моменты, когда flash обеспечивает асинхронность. Например, HttpService , WebService , URLLoader классы

Что это значит? Это означает, что с момента отправки запроса до момента получения ответа вы можете продолжить выполнение другого кода и обновление списка отображения. И когда вы получаете ответ, события отправляются (или когда запрос не выполняется).

Также в AIR некоторые операции с файлами могут обрабатываться асинхронно ( copyToAsync , deleteFileAsync , getDirectoryListingAsync , ...). То же самое и здесь: например, когда ваш файл копируется, вы получаете событие прогресса и можете обновлять представления (например, индикатор выполнения).

1 голос
/ 13 апреля 2011

Обратите внимание, что вы можете использовать многопоточность с Flash, используя внешний модуль Alchemy (программа на C) или PixelBender (обработка изображений). Кстати, Adobe в настоящее время работает над возможностью запуска нескольких SWF-файлов в разных потоках.

И, учитывая разницу между многопоточностью и асинхронным поведением, просто помните, что Flash основывается на фреймах. Каждый код, который вы пишете, даже при прослушивании асинхронного события, будет выполняться в определенном и линейном потоке в каждом цикле кадра.

0 голосов
/ 13 апреля 2011

Как упоминалось ранее, фактическая многопоточность обрабатывается на уровне проигрывателя, который в настоящее время не поддерживает истинную многопоточность.

Однако это не означает, что у вас не может быть модели программирования, которая ведет себя асинхронно. Можно с уверенностью сказать, что целью любого флэш-приложения является управление дисплеем тем или иным образом, поэтому любая стратегия обработки действительно определяется списком дисплеев.

Если речь идет об модели асинхронного программирования во Flex, они, скорее всего, имеют в виду процесс аннулирования / обновления, который происходит в жизненном цикле компонента Flex . Это создает способ запуска дорогостоящих процессов при следующем обновлении списка отображения, создавая полуасинхронную модель программирования.

Этот вид искусственной многопоточности также важен для приложений, которые требуют много итераций для больших наборов данных, таких как сложная визуализация данных. Большой алгоритм может быть определен как серия более мелких фрагментов, каждый из которых обрабатывается при обновлении списка отображения (смена кадра). Это позволяет остальной части приложения обрабатывать события и выполнять любые обновления отображения перед обработкой следующего фрагмента.

0 голосов
/ 13 апреля 2011

Краткий ответ, код, интерпретируемый Flash Player, является однопоточным, но сам Flash Player является многопоточным, поэтому вы можете иметь асинхронные события / функции.

0 голосов
/ 13 апреля 2011

Flex / ActionScript является однопоточным, а Flash - нет.Некоторые операции, такие как URLLoader, создают другой поток, которым вы не можете управлять.По завершении вы получаете событие из объекта URLLoader.

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