Можно ли одновременно получить доступ к двум функциям в классе в AS3? - PullRequest
0 голосов
/ 08 июня 2010

В пользовательской очереди есть функции push () и pop (). Pop () может быть вызван в любое время для Event.COMPLETE, значит ли это, что код может выполняться одновременно в push () и pop ()? Если да, есть ли способ предотвратить запуск кода в обеих функциях одновременно?

Ответы [ 3 ]

1 голос
/ 08 июня 2010

Нет, Flash является исключительно однопоточным, поэтому невозможно одновременно выполнять две операции.

В принципе вам не придется беспокоиться о том, что другой код не завершится при обработке события.1003 *

1 голос
/ 08 июня 2010

вы должны прочитать пост Сенокуляр на этом (см. События и Выполнение кадра в частности) Порядок операций .

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

0 голосов
/ 08 июня 2010

Вам нужно гуглить понятия «атомарной операции» в контексте «переключения контекста», а также идею мьютекса.

По сути, мьютекс - это логическое значение, которое устанавливается или очищается вашими потоками.

Каждая нить будет:

function pop () { Get_Mutex (); do_the_pop_operation (); Free_Mutex (); }

или

функция push () { Get_Mutex (); do_the_push_operation (); Free_Mutex (); }

Функция Get_Mutex () будет находиться в спящем режиме до получения мьютекса, поэтому одновременно может выполняться только одна операция.

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