Другие описали, что такое многопоточность, и вам понадобится многопоточность, если вы получаете хардкор в игровые движки C ++ и 3D, среди многих других дорогостоящих операций и языков, поддерживающих многопоточность.
Actionscript не имеет многопоточности. Он выполняет весь код в одном кадре. Таким образом, если вы создадите цикл for
, который обрабатывает 100 000 000 элементов, это приведет к зависанию приложения. Это связано с тем, что проигрыватель Flash Player может одновременно выполнять только один поток кода на кадр.
Вы можете добиться псевдопоточности, используя:
- Таймеры
- Event.ENTER_FRAME
Они позволяют вам прыгать и выполнять код.
Двигатели Tween, такие как TweenMax , могут работать с 1000 объектов одновременно в течение нескольких секунд с помощью таймеров. Вы также можете сделать это с помощью Event.ENTER_FRAME
. Существует нечто, называемое «чанкинг» (см. Презентация по оптимизации AS3 Гранта Скиннера ), в котором говорится «выполнять вычислительно дорогостоящие задачи за несколько кадров», например рисовать сложные растровые изображения, что является псевдо-многопоточностью Вы можете сделать с ActionScript.
Многие другие вещи являются асинхронными, например, вызовы служб. Если вы выполните запрос HTTPService
во Flex, он отправит запрос на сервер, а затем продолжит выполнение кода в этом фрейме. После этого сервер все еще может обрабатывать этот запрос (скажем, он сохраняет 30-мегабайтное видео в базе данных на сервере), и это может занять минуту. Затем он отправит что-то обратно во Flex и вы сможете продолжить выполнение кода с помощью обработчика событий ResultEvent.RESULT
.
Таким образом, Actionscript в основном использует:
- Асинхронные события и
- Таймеры ...
... для достижения псевдо-многопоточности.