Потоки , асинхронные операции , WWW- разочарование и надежда

Программирование на Юнити.

Потоки , асинхронные операции , WWW- разочарование и надежда

Сообщение marooned 11 мар 2010, 12:55

Привет Всем!
В последнее время занимаюсь изучением вопроса возможности воспроизведения потокового видео . Хочу чтобы всё это дело было асинхронное и тд и тп. Пришёл к выводу что карутины это действительно БЭДЭСС как кто-то написал на офф форуме. Почему? Потому что даже постоянное скачивание одной и той же картинки ( 1024*640) которую генерирует вебкамера (Axis) всплывает жуткими пиками в профайлере и тормозами в юнити соответственно. Попытался всё это воспроизводить асинхронными операциями :
1.Как написал Нео - гарантированный вылет.
2.В вебплеере просто тупо не работает изза того что возможно нет поддержки System.Threading (поправьте и направьте если ошибаюсь)

Попытался запихать в разные потоки и о чудо ! что-то заработало ! ничего не тормозит за исключением того что происходят периодические непонятно изза чего вылеты. (Канечна же в вебплеере не работает ничо) Думаю что если немного покорпеть можно добиться более менее стабильной работы с потоками...

WWW. Почему только WWW? Почему нет всяких webclient'ов и хттпвебреквестов? Не понимаю...
Что делать с сетевыми потоками? В общем я в гневе и замешательстве...

Что делать с асинхронными операциями? Неясно.

Отпишите кто что думает по этому поводу. Очень интересно мнение ваше о том что я тут понаписал и вообще.
Аватара пользователя
marooned
UNец
 
Сообщения: 37
Зарегистрирован: 20 сен 2009, 19:26

Re: Потоки , асинхронные операции , WWW- разочарование и надежда

Сообщение Neodrop 11 мар 2010, 13:41

Потоки в WEB работают. Это точно и проверено.
Вылеты могут быть от того, что обращаешься из потока к чему-либо, что связано с рендерингом.
Асинхронные операции работают исправно и отдельных потоков для себя вовсе не требуют (втихаря сами создают).

По видео в целом не могу помочь, ибо не сталкивался вовсе.

ЗАПОМНИМ! КОРАТИНЫ НЕ ПОТОК! ОНИ ВЫПОЛНЯЮТСЯ В ОСНОВНОМ ПОТОКЕ И ТОЛЬКО!
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Потоки , асинхронные операции , WWW- разочарование и надежда

Сообщение marooned 11 мар 2010, 13:44

Ну хорошо...Если я скачиваю в другом потоке текстуру то как потом можно её применить в основном потоке?
И оговорюсь что я не имю ввиду асинхронные операции юнитивские типа лоадасинк , а чисто дотнетовские.
Аватара пользователя
marooned
UNец
 
Сообщения: 37
Зарегистрирован: 20 сен 2009, 19:26

Re: Потоки , асинхронные операции , WWW- разочарование и надежда

Сообщение Neodrop 11 мар 2010, 14:22

Если бы с "чисто дотнетовских" можно было писать на диск юзверя, то загружаем текстуру, и берём с диска. Но это невозможно из-за политики безопасности броузеров...
Хм.. Как-то её точно можно загрузить, но честно говоря, не знаю, как.
А через WWW.LoadTexture это никак невозможно? (это просто вопрос)
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Потоки , асинхронные операции , WWW- разочарование и надежда

Сообщение Zaicheg 11 мар 2010, 18:07

Кстати, старт коратины из своего потока или старт потока из коратины — это нормально?
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Потоки , асинхронные операции , WWW- разочарование и надежда

Сообщение Neodrop 11 мар 2010, 18:44

Всё время варнинги будет сыпать. Типа "currentThread не равен" и бла-бла.
Но запускаются и работают.
Поток из коратины вообще без проблем.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Потоки , асинхронные операции , WWW- разочарование и надежда

Сообщение marooned 11 мар 2010, 20:37

www.LoadImageIntoTexture(tex) (причём как всем тут давно извесно естественно когда просто приравниваешь типа tex = www.texture то жди в скором времени переполнения памяти и вылет)

абсолютно точно что System.Treading.Thread работает в вебплеере?
Аватара пользователя
marooned
UNец
 
Сообщения: 37
Зарегистрирован: 20 сен 2009, 19:26

Re: Потоки , асинхронные операции , WWW- разочарование и надежда

Сообщение gnoblin 11 мар 2010, 20:56

а сколько надо писать tex = www.texture чтобы что-то поломалось? Я в ограниченных количествах использовал и нормально... :-\
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Потоки , асинхронные операции , WWW- разочарование и надежда

Сообщение marooned 11 мар 2010, 21:00

ну в моём случае часто и помногу приходится качать поэтому быстро засирается память...может сборщик не успевает...хз
Аватара пользователя
marooned
UNец
 
Сообщения: 37
Зарегистрирован: 20 сен 2009, 19:26

Re: Потоки , асинхронные операции , WWW- разочарование и надежда

Сообщение Neodrop 11 мар 2010, 22:03

абсолютно точно что System.Treading.Thread работает в вебплеере?

Больше чем на 100%
К примеру тут : www.apartama.ru/demo
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Потоки , асинхронные операции , WWW- разочарование и надежда

Сообщение marooned 12 мар 2010, 19:54

Да, действительно работают. С этим всё окей. Неокей с пресловутым WWW. При запуске потока в мозилле и в ИЕ вебплеер выкидывает анхендлед ексепшн...при запуске в гугле хром поток работает...не стабильно но работает...правда со временем выкидывает ошибку , относящуюся к d3d и текстуре. Проблема в коде конечно же...решаем. :-B
Аватара пользователя
marooned
UNец
 
Сообщения: 37
Зарегистрирован: 20 сен 2009, 19:26

Re: Потоки , асинхронные операции , WWW- разочарование и надежда

Сообщение marooned 12 мар 2010, 20:47

Есть ли какие-нибудь способы возвращать безопасно юнитивский Объект из параллельного потока в главный?
Аватара пользователя
marooned
UNец
 
Сообщения: 37
Зарегистрирован: 20 сен 2009, 19:26

Re: Потоки , асинхронные операции , WWW- разочарование и надежда

Сообщение Neodrop 12 мар 2010, 23:02

В том то и беда, что нету вроде. :-?
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Потоки , асинхронные операции , WWW- разочарование и надежда

Сообщение Multirezonator 19 мар 2010, 08:15

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

1.Создаю коллекцию объектов типа byte[];
2.Всю полученную инфу в в асинхронном режиме добавляю в эту коллекцию, предварительно заблокировав ее с помощью lock;
3.В основном потоке, например в FixedUpdate, проверяю есть ли в коллекции объекты.(обычно для коллекций Count);
4.Если есть объекты в коллекции, извлекаю их и обрабатываю уже в основном потоке(естесственно перед извлечением блокирую коллекцию с помощью lock);

Это механизм, реализация уже на вашей совести :). Можно вместо FixedUpdate использовать Update или свой таймер. Таймеры си события onTimer выполняют в собственном потоке, и перевести исполнение в основной поток можно только если Вы сделаете реализацию интерфейса ISynchronizeInvoke или унаследуете свой класс от класса, где реализация этого интерфейса есть.(например System.Windows.Forms.Control, в юнити недоступно)
Скрытый текст:



Аватара пользователя
Multirezonator
UNITрон
 
Сообщения: 248
Зарегистрирован: 15 фев 2010, 16:12
Откуда: Украина, Луганск
  • Сайт


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8