Могут ли методы выполняться в перекрытии?

Резюме:

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

Пример одного метода:

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 миллисекундных маршализованных фрагментов, которые в зависимости от частоты кадров выполняют пользовательские действия, аннулирование и рендеринг.

AVM2-ломтики

Другие вопросы по тегам