Просмотр полной версии : Re: Логика многопоточной загрузки.
Из-за закрытия темы: "Логика многопоточной загрузки" вынужден содать новую тему. Если модеры сочтут нужным, то перенесут моё сообщение в ту тему.
как всё это есть (http://help.adobe.com/ru_RU/as3/mobile/WS948100b6829bd5a61a52657a1274ff66899-8000.html)
Koopa, вы что там не могли разжевать и донести свою мысль, что здесь кинули ссылку и типа "я прав". Что вам там не понравилось-то? Вы там только на все утверждения отвечали "Нет", "Я сам лучше знаю" и т.п.
Вы можете по пунктам расписать, что вы хотите объяснить. Написать условия и вывести следствия? Или вы придрались к терминологии? Вас непонятно, короче.
Koopa - вы совершенно походу не понимаете, что пишите. Я когда первый отписал в той теме, я немного о другом думал, а именно о факте 1 поточности флеша. Про загрузку я не подумал. Вот предоставим вам такой код
f.load ( some.jpg )
c.load ( some1.jpg)
локально они или нет, не важно. Если вы выполните такой код, с прослушкой комплит ( лучше инит ) , где some.jpg весит 100 кб , а some1.jpg 200 кб. Вы всегда будете видеть, что some.jpg загрузился раньше. Так же вы можете провести эксперимент с 100 файлов. Эффект будет таким же. Правда есть оговорка и это кстати наводи на размышления. Если вы пи...нете 100 файлов, разных размеров в N загрузчиков, то неизветсно ( каждый раз ) , кто быстрее отработает. Что скажут гуру по этому поводу ? Почему из 100 запросов, разберем их от 1 кб до 100 кб. Иногда раньше грузанется 50 кб, чем 80 кб, или набоборот?! Есть мнения? ( многопоточность п.с. тут не причем, наверное))))))))))))))0ололол )
mikhailk
30.08.2014, 11:24
В первых проектах я пытался применять многопоточную загрузку и проблемы именно с контролем закачанных объемов там не было. Массив лоадеров, каждый из них знает свой прогресс, с определенной периодичностью обновляем суммарные показатели, когда все загрузки случились - вот оно, счастье.
Но жизнь достаточно быстро расставила все по своим местам. В реальном приложении, размещенном в Инете, часть ресурсов не догружалась, причем, случайным образом и совершенно непредсказуемо. В итоге приложение то работало стабильно, то глючило.
Так что только конвейерная (последовательная) загрузка. Но переубеждать автора смысла не вижу, видимо, некоторые шишки надо набить самостоятельно.
Zebestov
30.08.2014, 11:29
Koopa, а теперь внятно поясни, какое отношение цикл выполнения flash приложения имеет к процессу загрузки данных средствами браузера?
caseyryan
30.08.2014, 11:42
Из-за закрытия темы: "Логика многопоточной загрузки" вынужден содать новую тему. Если модеры сочтут нужным, то перенесут моё сообщение в ту тему.
как всё это есть (http://help.adobe.com/ru_RU/as3/mobile/WS948100b6829bd5a61a52657a1274ff66899-8000.html)
Блин. Это же гениально ) Только фишка в том, что загрузчик грузит данные независимо от кадров. В кадрах только события рассылаются. А загрузчиков, которые грузят что-либо одновременно, может быть множество, и им совершенно пофиг как там в программе движутся кадры
В первых проектах я пытался применять многопоточную загрузку
Может в этом все и дело? В LoaderMax есть же синхронная загрузка и если бы Выявленный Вами ,fu существовал
на самом деле, то в масштабах мира, его бы вынудили отказаться от это опции.
mikhailk
30.08.2014, 12:33
Может в этом все и дело? В LoaderMax есть же синхронная загрузка и если бы Выявленный Вами ,fu существовал
на самом деле, то в масштабах мира, его бы вынудили отказаться от это опции.
В LoaderMax реализована однопоточная загрузка.
//create a LoaderMax named "mainQueue" and set up onProgress, onComplete and onError listeners
var queue:LoaderMax = new LoaderMax({name:"mainQueue", onProgress:progressHandler, onComplete:completeHandler, onError:errorHandler});
//append several loaders
queue.append( new XMLLoader("xml/data.xml", {name:"xmlDoc"}) );
queue.append( new ImageLoader("img/photo1.jpg", {name:"photo1", estimatedBytes:2400, container:this, alpha:0, width:250, height:150, scaleMode:"proportionalInside"}) );
queue.append( new SWFLoader("swf/child.swf", {name:"childClip", estimatedBytes:3000, container:this, x:250, autoPlay:false}) );
queue.append( new MP3Loader("mp3/audio.mp3", {name:"audio", repeat:2, autoPlay:true}) );
//prioritize the loader named "photo1"
LoaderMax.prioritize("photo1"); //same as LoaderMax.getLoader("photo1").prioritize();
//start loading
queue.load();
queue - это т.н. называемая "очередь".
Подробности читаем тут:
http://greensock.com/LoaderMax-AS3
MikroAcse
30.08.2014, 12:55
В LoaderMax есть же синхронная загрузка
Вы не понимаете, что такое "синхронная загрузка".
Вот что такое синхронная загрузка (такого нет во флеше, только в AIR в виде FileStream):
var image:Loader = new Loader();
image.loadSync(urlRequest);
//и здесь БЕЗ всяких событий мы УЖЕ можем использовать эту картинку
//готовьтесь к небольшому зависанию
Я не правильно выразился. Синхронная, это когда я создал лоадер и дальше код работать не будет, пока лоадер не закончит работать. Такого во флеше нет, но я хотел сказать о параллельной, когда создано несколько лоадеров и в браузере они запущенны одновременно.
В LoaderMax реализована однопоточная загрузка.
Как же нет? Запустите в демо лоадер картинок и установите количество больше одной.
И запустите её в браузере и начнется одновременное скачивание.
Добавлено через 31 минуту
Demo чуть выше кода по Вашей ссылке. Это же не очередь, а одновременная работа нескольких лоадеров.
mikhailk
30.08.2014, 14:16
Как же нет? Запустите в демо лоадер картинок и установите количество больше одной.
Ок, соглашусь.
При установке maxConnections производится попытка параллельной загрузки через соответствующее количество лоадеров.
Но если посмотреть, что происходит реально, то видно, что никакой параллельной загрузки 20 изображений (я выставил maxConnections=20) нет. В каждый момент времени качается не более 6-ти изображений.
http://cdn.joxi.ru/uploads/prod/2014/08/30/bb4/7cb/73ce52f7fda2bf4b29b127141985422ab304c636.jpg
И все равно, повторюсь, ничего технически сложного в параллельной загрузке через несколько лоадеров нет, но последовательная загрузка надежней.
У браузера есть свой лимит на количество скачивания, по этому Вы и видите максимум дозволенного.
А с надежностью сложно согласится... У меня проблем не возникало от этого...
mikhailk
30.08.2014, 15:18
Расслабьтесь, никто не спорит.
Будет более-менее крупный проект, где грузится хотя бы 20-30 метров разнообразных ресурсов, сами придете к осознанию того, что ничего хорошего в хаотической загрузке всего этого зоопарка нет. А с учетом того, что эти ресурсы еще и в браузере прекрасно кэшируются, то единственный плюс параллельной загрузки (сокращение общего времени на трафик) станет чисто номинальным.
Koopa, вы что там не могли разжевать и донести свою мысль, что здесь кинули ссылку и типа "я прав". Что вам там не понравилось-то? Вы там только на все утверждения отвечали "Нет", "Я сам лучше знаю" и т.п.
Вы можете по пунктам расписать, что вы хотите объяснить. Написать условия и вывести следствия? Или вы придрались к терминологии? Вас непонятно, короче.
Koopa - вы совершенно походу не понимаете, что пишите. Я когда первый отписал в той теме, я немного о другом думал, а именно о факте 1 поточности флеша. Про загрузку я не подумал. Вот предоставим вам такой код
f.load ( some.jpg )
c.load ( some1.jpg)
локально они или нет, не важно. Если вы выполните такой код, с прослушкой комплит ( лучше инит ) , где some.jpg весит 100 кб , а some1.jpg 200 кб. Вы всегда будете видеть, что some.jpg загрузился раньше. Так же вы можете провести эксперимент с 100 файлов. Эффект будет таким же. Правда есть оговорка и это кстати наводи на размышления. Если вы пи...нете 100 файлов, разных размеров в N загрузчиков, то неизветсно ( каждый раз ) , кто быстрее отработает. Что скажут гуру по этому поводу ? Почему из 100 запросов, разберем их от 1 кб до 100 кб. Иногда раньше грузанется 50 кб, чем 80 кб, или набоборот?! Есть мнения? ( многопоточность п.с. тут не причем, наверное))))))))))))))0ололол )
Koopa, а теперь внятно поясни, какое отношение цикл выполнения flash приложения имеет к процессу загрузки данных средствами браузера?
Блин. Это же гениально ) Только фишка в том, что загрузчик грузит данные независимо от кадров. В кадрах только события рассылаются. А загрузчиков, которые грузят что-либо одновременно, может быть множество, и им совершенно пофиг как там в программе движутся кадры
Жесть! вам даже Adobe не указ!
caseyryan
30.08.2014, 18:13
Жесть! вам даже Adobe не указ!
Жду ссылку на статью, где описана работа Loader'а, которая подтверждает, что загрузка в нем зависит от кадров. А всю эту фигню сюда можно не скидывать.
Жду ссылку на статью, где описана работа Loader'а, которая подтверждает, что загрузка в нем зависит от кадров. А всю эту фигню сюда можно не скидывать.
А ты забавен!
В первой части первой фазы поступают и отправляются события среды выполнения. Этими событиями могут быть завершение или ход выполнения асинхронных операций, например при загрузке данных по сети.
Или это фигня?
caseyryan
30.08.2014, 18:47
Или это фигня?
Да, это фигня. События проходят в кадрах, а загрузка идет отдельно. Более того, флеш плеер инициализирует загрузку, а грузит сам браузер, еще и в свой кэш это все добавляет. В кадрах мы можем получить события, и по ним проверить сколько уже загружено. Может ты еще скажешь, что загрузчик грузит по байту в кадр? Логично же, да?
А ты забавен!
Нет, это ты забавен. Понабросал какой-то необоснованной фигни, и все аргументы, которые привел, сводятся к фразам типа "не надо за меня решать, что я знаю".
Мда. И такая особь куриных, мужского пола, помогает людям понять AS3.Adobe сделали, а он видит это по своему.
Zebestov
30.08.2014, 20:03
Koopa, ты не огрызайся, это уже начинает докучать.
Мой вопрос вполне прозрачен. Ты на него так и не ответил.
Добавлено через 5 минут
И да, плюс за оскорбления.
Расслабьтесь, никто не спорит.
Будет более-менее крупный проект, где грузится хотя бы 20-30 метров разнообразных ресурсов, сами придете к осознанию того, что ничего хорошего в хаотической загрузке всего этого зоопарка нет. А с учетом того, что эти ресурсы еще и в браузере прекрасно кэшируются, то единственный плюс параллельной загрузки (сокращение общего времени на трафик) станет чисто номинальным.
У меня есть проект, который связан с модерацией фотографий. Модератор успевает обработать фотографию за 1-2 секунды, а значит поток фотографий должен быть постоянным. Количество фотографий, которые проходят за смены переваливает за тысячи, соответственно и объем более 20-30 метров. Использую многопоточную загрузку, но у модератора есть возможность изменить число потоков от 1 до 5, больше просто не надо, тк снижается скорость загрузки отдельной фотографии, а нам просто нужно, чтобы канал не простаивал.
Что касается загрузки 6 потоков из 20, то есть не только число одновременных загрузок, но и число одновременных загрузок с одного домена. То есть можно грузить одновременно 20 картинок, но 4 разных доменов (6+6+6+2). Если грузить все 20 с одного, то сработает ограничение и будут грузится скажем 6, как в вашем случае, а остальные будут ждать своей очереди. И если размер фалов большой, то когда очередь доходит до последних, то просто будет timeout ожидания ответа от сервера, от сюда и не стабильность.
Начав читать последнее сообщение, у меня появилась надежда понять причину возникновения проблем при загрузки несколькими Loaders сразу. И все два абзаца текста я с легкостью понял, но когда дошел до самого важного-последнего предложения, у меня появилось чувство неудовлетворенности... Сколько я его не перечитываю, я не могу его понять.
И фиг бы с ним, но тема мне интересна и мне остается только попросить раскрыть последнее предложение более подробно:)
В первой части первой фазы поступают и отправляются события среды выполнения. Этими событиями могут быть завершение или ход выполнения асинхронных операций, например при загрузке данных по сети. любишь приводить цитаты из справки, так будь добр внимательнее их читать.
В любой асинхронной системе есть точка синхронизации, во флеше эта точка начала цикла "первая фаза", точка синхронизации состояния это не показатель однопоточной системы.
Начав читать последнее сообщение, у меня появилась надежда понять причину возникновения проблем при загрузки несколькими Loaders сразу. И все два абзаца текста я с легкостью понял, но когда дошел до самого важного-последнего предложения, у меня появилось чувство неудовлетворенности... Сколько я его не перечитываю, я не могу его понять.
И фиг бы с ним, но тема мне интересна и мне остается только попросить раскрыть последнее предложение более подробно:)Когда браузер посылает запрос на сервер, он ожидает ответ. Но не ждет бесконечно. Время ожидания зависит от браузера. Например ФФ 30 ждет 300 секунд. Параметр network.http.response.timeout в about:config
Соответственно, при запросе сразу 20 очень тяжелых картинок, посылаются 20 запросов, но обрабатываются браузером только, скажем, первые 6. Допустим время на их загрузке 100 секунд, потом грузятся следующие 6, это +100 секунд, потом еще 6 и еще +100, и когда доходит очередь до последних двух, то со времени запроса прошло 300 секунд и браузер посчитал, что время на ответ вышло и прекращает ждать ответ.
iNils, Спасибо! А то я много раз слышал о проблемах, но объяснить причину ни у кого не получалось.
Ха-ха. Какой глупый фаерфокс, так, навскидку. Зачем он ставит старт таймаута на сам факт подачи запроса извне, если сам подает запрос на загрузку после того, как освободится один из предыдущих 6-ти запросов?
Ха-ха. Какой глупый фаерфокс, так, навскидку.
Ха, программы порой ведут себя настолько по-дурацки нелогично и непродуктивно, что иногда задумываешься: а не люди ли их писали? :o
gloomyBrain
04.09.2014, 22:54
Возможно, таймаут диспатчится самим FP? Потому что что-то я не замечал, чтобы у меня в FF или Chrome что-то из ресурсов не загружалось на всяких модных app-like сайтах с кучей js-библиотек, css-фреймворков и ajax-оперденей.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.