Поддерживает ли Flex 3 многопоточность? - PullRequest
6 голосов
/ 12 апреля 2011

Поддерживает ли Flex 3 многопоточность? Если да, есть ли примеры или ссылки, на которые я мог бы взглянуть?

Ответы [ 4 ]

6 голосов
/ 13 апреля 2011

Где-то в Adobe Flash Player поддерживает многопоточность ... http://www.bytearray.org/?p=3007. Это просто еще не публично доступно.

Кроме этого, см. Многопоточность или зеленая многопоточность в ActionScript? В Интернете также есть несколько статей об использовании многопоточности Pixel Bender для обработки данных.

4 голосов
/ 12 апреля 2011

ActionScript 3 является однопоточным.

То, что вы можете сделать, это нарезать работу на достаточно маленькие кусочки, чтобы не слишком повлияла на отзывчивость. Например:

private var _long_process_work_object:LongProcessWorkClass;
private var _long_process_timer:Timer;

private function startSomeLongAndIntensiveWork():void
{
    _long_process_work_object = new LongProcessWorkClass();

    _long_process_timer = new Timer(10);
    _long_process_timer.addEventListener("timer", longProcessTimerHandler);
    _long_process_timer.start();
}

private function longProcessTimerHandler(event:TimerEvent):void 
{
    _long_process_timer.stop();

    // do the next slice of work:
    // you'll want to calibrate how much work a slice contains to maximize 
    // performance while not affecting responsiveness excessively
    _long_process_work_object.doSomeOfTheWork();

    if (!_long_process_work_object.Done) {
        // long process is not done, start timer again
        _long_process_timer.start();
        return;
    }

    // long process work is done, do whatever comes after
}
4 голосов
/ 12 апреля 2011

Как сказал Алекс здесь :

Actionscript является однопоточным, если вы тратите много времени на тяжелые вычисления, пользовательский интерфейс не может быть обновлен, пока вы это делаете вычисления, так что ваше приложение застряло или эффекты не запускаются плавно.

Аналогично, в Actionscript также нет уступок или блокировок. Если следующая строка кода должна выполняться, вы не можете предотвратить следующую строка кода от запуска. Это означает, что когда вы вызываете Alert.show (), следующая строка кода, следующая сразу же.

Во многих других средах выполнения окно оповещения должно быть закрыто до следующая строка кода продолжается. Потоки могут быть особенностью Actionscript когда-нибудь, но до тех пор, вы должны жить с фактом что сейчас такого нет.

0 голосов
/ 07 октября 2015

Flex 3 основан на ActionScript 3. ActionScript 3 не обеспечивает поддержку многопоточности (вы не можете писать код, предназначенный для многопоточного выполнения).Скомпилированное приложение Flex работает на платформе Flash Player.В Adobe Flash Player 11.4 и более поздних версиях добавлена ​​поддержка многопоточности.

...