Просмотр полной версии : Многопоточность
s3dworld
23.12.2011, 12:29
Всем доброго утра!
Есть код, который последовательно через создание новых Loader'ов загружает изображения с сервера. Загрузил одно, грузит другое. В общем-то получается довольно долго. Можно как либо этот процесс ускорить? Например создать заранее нужное количество Loader'ов и в цикле прокрутить их на загрузку. А потом в одной функции обратного вызова подсчитывать количество срабатываний и уже двигаться дальше, если их число равно число сработанных load'ов. Что-то такое прокатит или какие варианты?
Попробуйте, разве самому не интересно, чем ждать ответа? А какой оргазм от того, что получится ;о))
s3dworld
23.12.2011, 12:36
GBee
> Попробуйте, разве самому не интересно, чем ждать ответа? А какой оргазм от того, что получится ;о))
Время тратить не хочется на поиски. Сроки)) Я оптимизирую код написанный другим программистом. Жду советов...
Да, можно. Loader грузит файлы асинхронно.
s3dworld
23.12.2011, 12:52
GBee
> Да, можно. Loader грузит файлы асинхронно.
Но функция обратного вызова (укажу для всех Loader'ов одну) будет вызываться последовательно же?
она будет вызываться столько раз, сколько загрузчиков кинет событие об окончании загрузки, которое слушается в классе. И вызываться будет в той последовательности, в какой загрузчики заканчивают свою работу. Если первый загрузчик грузит большую картинку, а второй маленькую, естественно второй отработает раньше
gloomyBrain
23.12.2011, 13:08
Да, колбэк вызывается по очереди. Все именно так потому что:
1) флеш плеер просит браузер загрузить а
2) флеш плеер просит браузер загрузить б
...
3) браузер выделяет потоки загрузки и начинает загружать
4) что-то загрузилось - браузер отдает контент флеш-плееру
5) у флеш плеера возникает событие Event.COMPLETE
6) если за 1 кадр произошло несколько событий, то они обрабатываются последовательно, в порядке их возникновения или приоритета слушателей.
То есть, грубо говоря, флеш плеер - это штука, которая "живет" один кадр. Набралось событий за этот кадр - они обработались. Переходим к следующему кадру, там снова собираем события и снова их обрабатываем.
Такой алгоритм работы называется state-machiene (ну или конечный автомат). У программы есть несколько состояний и она последовательно переходит из одного в другое все время своей жизни.
Время тратить не хочется на поиски. Сроки)) Я оптимизирую код написанный другим программистом. Жду советов...
//trollmode on
11:08 - 10:29 = 0:39 минут. Проверка самому составила бы минут 10-15.
//trollmode off
Есть готовые решения. К примеру, BulkLoader.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.