Могут ли методы выполняться в перекрытии?
Резюме:
Я пытаюсь выяснить, может ли один метод выполняться дважды в перекрытии при выполнении в одном потоке. Или, если два разных метода могут быть выполнены в перекрытии, где, когда они совместно используют доступ к определенной переменной, может произойти некоторое нежелательное поведение.
Пример одного метода:
var ball:Date;
method1 ():Date {
ball = new Date();
<some code here>
return ball;
}
Вопросы:
1) Если method1 запускается каждые 20 мсек с использованием системы событий, а весь метод занимает более 20 мсек, будет ли метод выполняться снова в перекрытии?
2) Существуют ли какие-либо другие сценарии в среде с одним потоком, где метод (ы) может выполняться в перекрытии, или AVM2 ограничен выполнением 1 метода за раз?
Исследования: я прочитал https://www.adobe.com/content/dam/Adobe/en/devnet/actionscript/articles/avm2overview.pdf котором объясняется, что в AVM2 есть стек для запуска кода, и описание для Методы создают впечатление, что если второго стека нет, система стеков может одновременно выполнять только 1 метод. Я просто хотел бы перепроверить с экспертами StackeOverflow, чтобы убедиться наверняка.
Я имею дело с некоторыми чувствительными ко времени данными и должен убедиться, что метод не изменяет переменную, к которой одновременно обращается другой метод.
1 ответ
ActionScript является однопоточным; хотя, может поддерживать параллелизм через рабочих ActionScript, которые являются несколькими приложениями SWF, которые работают параллельно.
Существуют асинхронные шаблоны, если вы хотите, чтобы вложенная функция или анонимная функция выполнялась в цепочке областей действия функции.
Я думаю, что вы имеете в виду, как AVM2 выполняет код, управляемый событиями, и вам следует изучить маршализованный фрагмент AVM2. События игрока выполняются в начале среза.
Тяжелое выполнение кода замедлит частоту кадров.
Это линейно - синхронно блокируется. Каждый кадр не вызывает код параллельно.
AVM2 выполняет 20 миллисекундных маршализованных фрагментов, которые в зависимости от частоты кадров выполняют пользовательские действия, аннулирование и рендеринг.