|
|
|||||
Регистрация: May 2009
Адрес: Moscow
Сообщений: 2
|
События - синхронны или асинхронны?
Добрый день!
Я новичок в AS3, есть некий опыт разработки на C++. Насколько я понял, весь код, выполняемый после запуска приложения работает в единственном потоке и поэтому события выполняются синхронно - код, который делает вызов addEventListener ожидает, пока отработает метод, вызывающий dispatchEvent. Тогда в каком контексте выполняется цикл работы таймера? Ведь после вызова timer.start мы продолжаем работу? На всякий случай прошу прощения за несоблюдение терминологии. Спасибо. PS Читал Колина Мука, но у него тема событий раскрыта чисто "потребительски", без деталей работы - делай так и будет щастье. |
|
|||||
Как я понимаю, флэш реализует многопотоковость, но инструментов управления у программиста нет.
Например, если в каком-нибудь незначительном обработчике произайдет эксепшн, то основной поток продолжит свое выполнение.
__________________
Сам себе репортер |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Нет, не ожидает. Код выполняется дальше. События в отдельном потоке.
|
|
|||||
блогер
Регистрация: May 2008
Адрес: (0, 10, 185) в локальной системе
Сообщений: 721
Записей в блоге: 6
|
Флеш выполняет весь код в одном потоке. Таймер срабатывает между вызовами Event.ENTER_FRAME, причем, если процессор сильно загружен и EnterFrame будет не успевать в заданную частоту кадров, то события таймера могут пропускаться. Поскольку весь код обрабатывается в одном потоке, два обработчика событий, например, ENTER_FRAME и Timer не могут работать в одно время. Во флеше 10 появилась настоящая многопоточность, но она выполняет на другом процессоре только отрисовку и скрипты PixelBender, т.е. AS3 код попрежнему выполняется в одном потоке как и раньше.
|
|
|||||
стервочка (я мужик)
|
Яски, а если бы он не работал в разных потоках второй бы не тормозил бы? Вы не в теме. реальная многотопочность во флэше с тех пор как, появилась загрузка файлов бред не несите.
Добавлено через 1 минуту Яски, и да. p.s.:таймеры в отдельном потоке. |
|
|||||
ветеран форума
|
Цитата:
__________________
4am is time to rock |
|
|||||
Регистрация: May 2009
Адрес: Moscow
Сообщений: 2
|
Спасибо большое за ответы!
Выходит, что вызов любого метода класса, унаследованного от EventDispatcher, тут же возвращает управление и в какой-то момент происходит вызов callback'a с помощью dispatchEvent? И ещё, как я понимаю, этот класс должен быть членом класса вызывающего метода. В противном случае, сборщик мусора его уничтожит, так как единственная ссылка на него локальна легко может выйти за пределы видимости задолго до того, как будет сделан вызов dispatchEvent. |
|
|||||
.
|
события выполняются синхронно. последний пост просто тупо не понял. при чем тут наследования от EventDispatcher. Да хоть от XuEventDispatcher, будет то же самое. Класс должен быть членом класса. Интересная фраза. Сборщик мусора никого не уничтожит, пока есть last man standing (существует хотя бы одна ссылка на объект, который прдполагается удалить).
|
|
|||||
не, не уничтожит, даже в случае локальной переменной
другое дело, что добраться до нее (чтобы отписаться от рассылки, например) ты уже не сможешь |
|
|||||
стервочка (я мужик)
|
DarkLight, сударь, Вы меня ни с кем не путаете?
|
Часовой пояс GMT +4, время: 04:58. |
|
« Предыдущая тема | Следующая тема » |
Теги |
синхронность , события , Таймер |
|
|