![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
Цитата:
Многопоточность надо реализовывать как раз на низком уровне, иначе это будет псевдомногопоточность. Цитата:
И надо не забывать, что флешовый runtime весит около двух мегабайт, а не пятнадцати, как Java. Для веба размер runtime очень критичен, поэтому не все сразу. И что именно вы хотите обсудить? Как было было прекрасно, если… и повздыхать по этому поводу? Пути реализации runtime-транслятора на AS3? Если да, то лично я не вижу смысла в такой штуке, реализовывать на ней что-либо и потом бороться с глюками, теряя время и деньги неоправданно. Последний раз редактировалось etc; 11.04.2008 в 10:03. |
|
|||||
|
Регистрация: Sep 2007
Адрес: Путенбург
Сообщений: 147
|
Цитата:
![]()
__________________
<!-- КРЭКС ПЭКС ФЛЭКС --> |
|
|||||
|
[+1 18.03.08]
Регистрация: Nov 2006
Сообщений: 223
|
Давайте переживать трудности по мере их поступления (с) Жванецкий
Никто не застрахован от багов и глюков. В том же флеш-плеере, флексе и адобовском компиляторе их предостаточно. Сейчас у меня, так сказать, стадия проектирования. Я как раз хочу заранее предусмотреть, с какими проблемами придётся столкнуться и либо найти путь их решения, либо всё-таки осознать, что да, действительно, вся затея обречена на провал. Но пока ни одной такой роковой проблемы озвучено не было. Да, я не профессионал в области создания компиляторов, однако некоторый опыт всё же имеется. К тому же, в данном случае не нужно писать всё с нуля - только изменить существующие. Исходники haXe доступны давно, исходники флексового компилятора тоже недавно были открыты - есть из чего выбрать. На худой конец сделать именно транслятор, на выходе у которго не байт-код, а код на AS3. Реализовать псевдомногопоточность (мне больше нравится термин интегрированная многоконвеерность) можно разными способами. Я ожидал как раз таки рассмотрения этих способов и выбора наиболее оптимального из них (по критериям безопасности, затрат ресурсов и т.д.). |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
К сожалению, на тему конвееров я с вами не собеседник, у меня острой необходимости в их использовании не было.
|
|
|||||
|
Регистрация: Jan 2009
Сообщений: 38
|
__etc, у меня к вам вопрос. В посте № 28 вы привели код
var connected:bool = false; var attempts:int=0; while (!connected && attempts<3) { if (sock.connect()) { connected = true; } else { attempts++; sleep(500); } } Пройдем по шагам. Клиент (под клиентом подразумевается код, который вызывает ваш) вызывает connect() Допусти ответа нет, тогда вызывается attempt() в котором выполняется this._timeoutID = setTimeout(this.connect, 500); и всё, на этом метод connect() заканчивается? В этом случае код клиента пойдет дальше, неизвестно куда. Приведенный же выше код с синхронными вызовами работает совсем не так. Он гарантированно или подключится или нет, и всё это время клиент будет ждать. Объясните, где же тут аналог? |
|
|||||
|
стервочка (я мужик)
|
Kolan, ждать будет один поток, а не весь клиент.
|
|
|||||
|
Регистрация: Jan 2009
Сообщений: 38
|
BlooDHounD, помогите разобраться. Что значит один поток? Что это за поток и откуда он берется?
И главное, что заставит его ждать? setTimeout? Ведь это просто запуск таймера. Таймер просто запуститься и ждать его никто не будет. Рассмотри пример того же WindWalker, который который он приводит в обсуждении на gotoandflash.ru: Он говорит, что аналогом кода В AS будет: function test():void { trace ("Before"); setTimeout(test_part2, 1000); } function test_part2():void { trace ("After"); } <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="init()"> <mx:Script> <![CDATA[ private function init(): void { textArea.text = textArea.text + "1"; doTest() textArea.text = textArea.text + "2"; } private function doTest(): void { textArea.text = textArea.text + "Before"; setTimeout(test_part2, 1000); } private function test_part2():void { textArea.text = textArea.text + "After"; } ]]> </mx:Script> <mx:TextArea x="32" y="37" width="333" height="233" id="textArea"/> </mx:Application> Это означает, что никакого ожидания нет и такой вариант (с setTimeout(test_part2, 1000)) — это совершенно не аналог delay(1000);. Совсем непонятно, почему и WindWalker и __etc говорят о их идентичности. |
|
|||||
|
ветеран форума
|
Было сказано про аналогичность в рамках конкретной локальной задачи. Если говорить о реальной реализации - флексовый компилятор опенсорсен, дорабатывайте под свои нужды(например, такой доработкой были реализованы вещи типа code coverage для flex) для симуляции delay.
__________________
4am is time to rock |
|
|||||
|
Регистрация: Jan 2009
Сообщений: 38
|
Я не хочу дорабатывать или флеймить, я хочу понять как устроен Флекс.
Даже в рамках конкретной задачи код __etc, о котором я говорил ранее в посте № 45 не решает задачу, которую просит решить WindWalker. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Всё просто: в ActionScript нет ни sleep, ни delay, т. е. остановить поток нельзя. Но вместо остановки можно просто ничего не делать и повесить вызов нужной функции по таймеру.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 10:34. |
|
|
« Предыдущая тема | Следующая тема » |
|
|