[Вопрос] TriggerSleepAction
|
|
lawson | Дата: Пятница, 30 Декабря 2011, 19:19:24 | Сообщение # 1 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| ВСе началось с того что решил занятся оптимизацией кода в карте, ну и думал с чего начать, у меня был один старый триггер на предмет который использовался и от юнита разлетались даммики, дойдя до определенного расстояния они удалялись, вся система была сделана на вейте так как не шарил еще тогда что такое хеш, вейт там стоит на 5 секунд, в системе все на локалках, я использовал этот скилл дважды в течении 3 секунд, при этом все даммики благополучно удалились и обнулились, следовательно утечек == нет. Так Как всетаки работает вэйт: ведь если написать такой код:
local unit u = СreateUnit() call PolledWait(100) call KillUnit(u)
То даже если во время вейта еще раз сработает этот триггер все равно первый юнит который уже создался и записался в лок.перменную все равно умрет, при это следующий не перезаписывает эту перменную, так как она создается уникально и следовательно тоже умрет. Протестировав я получил должный эффект так как должно быть. Вот такие пироги. Так что исходя из выше сказанного следует что в таких случаях можно использовать вейты. Этим я хочу предложить заменять таймер и хеш на вейт или СлипЭкшн с локалками в таких системах: Воскрешение героя, удаление даммика после всех его действий или произвести какие либо еще действия с даммиком в локалке по истечению времени и еще каких либо действий с локалками.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Пятница, 30 Декабря 2011, 20:21:08 |
|
|
|
Diabfall | Дата: Пятница, 30 Декабря 2011, 21:16:54 | Сообщение # 2 |
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
| Всё же вейты иногда тупят даже с локалками, особенно когда время вейта меньше 0.5 сек. и в триггере вейт используется несколько раз. (баг: действия тупо проходят мгновенно без учёта вейта)
|
|
|
|
lawson | Дата: Пятница, 30 Декабря 2011, 21:36:30 | Сообщение # 3 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (Diabfall) действия тупо проходят мгновенно без учёта вейта) Ну думаю .5 - это и для глаза практически мгновенно. Нет я имею ввиду например создание даммика, кастование даммиком одного спелла а потом через секунды 2 кастование другого спелла на другого юнита и последующее удаление. Для того чтоыб сделать это традиционным способом тоесть через таймер и хеш, нужно писать лишнюю функцию, сохранять в хеш дамми с хендлом таймера, куча действия вместо одной строчки СлипЭкшн(2).
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
Hexing | Дата: Суббота, 31 Декабря 2011, 06:18:41 | Сообщение # 4 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| Quote (lawson) ocal unit u = СreateUnit() call PolledWait(100) call KillUnit(u) надеюсь ты написал в конце иначе это утечка
Quote (lawson) Ну думаю .5 - это и для глаза практически мгновенно. Нет я имею ввиду например создание даммика, кастование даммиком одного спелла а потом через секунды 2 кастование другого спелла на другого юнита и последующее удаление. Для того чтоыб сделать это традиционным способом тоесть через таймер и хеш, нужно писать лишнюю функцию, сохранять в хеш дамми с хендлом таймера, куча действия вместо одной строчки СлипЭкшн(2). никогда не исользуй слипы и поллед вэйты слип очень не точен, а при использавании сего в цикле возможен моментальный обрыв функции поллед вэйт - убойная комбенация слипа и таймера, выносящая рога северному оленю своей навороченностью и сложностью, опять же точность хромает, хоть и выше слипа, но лаги при многократном использовании обеспечены(кажется там таймер не обнуляется=>утечка), да и устройство бредовое, упор на слип... А написатели jass явно неумели тормозить поток как надо(я лично не вижу в этом ничего сложного), и я даже не хочу знать как они с-эмитировали слип... работает же хорошо - только таймер. Но ты как гуишник можешь об этом не думать, а потом, когда приспичит гнаться за эффективностью, ты сам просветлеешь!
|
|
|
|
SirNikolas | Дата: Суббота, 31 Декабря 2011, 15:01:23 | Сообщение # 5 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| lawson, TriggerSleepAction и все его производные (PolledWait, сообщения в кинематике и т. д.) очень часто вешают поток. Таймер таких багов не имеет.
|
|
|
|
lawson | Дата: Суббота, 31 Декабря 2011, 15:23:45 | Сообщение # 6 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (Hexing) Но ты как гуишник можешь об этом не думать, а потом, когда приспичит гнаться за эффективностью, ты сам просветлеешь! Ладно с темой все понятно, я знаю что вейты глючны я не заставляю вас переходить на вейты да и сам не собираюсь, про циклы вооще я ни чего не говорил(официально их используют там только истенные фанатики гуи) Кекс! Я хотел предложить не гнобить гуишников каждый раз видя у них в триггере вставки CS при этом стоящий Вейт, можно каждый раз не насиловать их мозг таймера или хешем, в случаях которые я описал выше, а просто объяснить что можно сделать код более менее утечным с помощью локалок и того же вейта, думаю им так будет проще понять и мозг у этих хомячков будет впорядке.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Суббота, 31 Декабря 2011, 15:44:11 |
|
|
|
Hexing | Дата: Суббота, 31 Декабря 2011, 16:25:56 | Сообщение # 7 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| Quote (lawson) Ладно с темой все понятно, я знаю что вейты глючны я не заставляю вас переходить на вейты да и сам не собираюсь, про циклы вооще я ни чего не говорил(официально их используют там только истенные фанатики гуи) Кекс! Я хотел предложить не гнобить гуишников каждый раз видя у них в триггере вставки CS при этом стоящий Вейт, можно каждый раз не насиловать их мозг таймера или хешем, в случаях которые я описал выше, а просто объяснить что можно сделать код более менее утечным с помощью локалок и того же вейта, думаю им так будет проще понять и мозг у этих хомячков будет впорядке. не знал что ты такого низкого мнения о себе: Quote (lawson) этих хомячков я конечно же не принуждаю гуишников переходить на таймеры и jass, но у тебя то опыта много, ты то уже должен перейти на светлую сторону силы
|
|
|
|
lawson | Дата: Суббота, 31 Декабря 2011, 16:52:57 | Сообщение # 8 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (Hexing) не знал что ты такого низкого мнения о себе: Не понимаю о чем ты.Quote (Hexing) ты то уже должен перейти на светлую сторону силы
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Суббота, 31 Декабря 2011, 16:53:08 |
|
|
|
Hexing | Дата: Суббота, 31 Декабря 2011, 17:54:42 | Сообщение # 9 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| я говорю что тебе уже хватит тратить время на глупые имитации вроде слипа, и пора заняться нормальным кодингом с помощью таймеров
|
|
|
|
lawson | Дата: Суббота, 31 Декабря 2011, 18:00:25 | Сообщение # 10 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (Hexing) я говорю что тебе уже хватит тратить время на глупые имитации вроде слипа, и пора заняться нормальным кодингом с помощью таймеров Еще раз пишу: чета я тебя не понимаю!Quote (lawson) у меня был один старый триггер на предмет который использовался и от юнита разлетались даммики, дойдя до определенного расстояния они удалялись, вся система была сделана на вейте так как не шарил еще тогда что такое хеш ТЫ Кекс помоему как всегда все неправильно прочитал и понял.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Суббота, 31 Декабря 2011, 18:07:16 |
|
|
|
Hexing | Дата: Суббота, 31 Декабря 2011, 18:44:04 | Сообщение # 11 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| чего ты хочешь?
|
|
|
|
lawson | Дата: Суббота, 31 Декабря 2011, 19:03:02 | Сообщение # 12 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (Hexing) чего ты хочешь? Я хочу чтобы ты мне объяснил этоQuote (Hexing) пора заняться нормальным кодингом с помощью таймеров
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
Hexing | Дата: Суббота, 31 Декабря 2011, 19:07:09 | Сообщение # 13 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| xnj bvtyyj nt,t yt gjyznyj что именно тебе не понятно
|
|
|
|
lawson | Дата: Суббота, 31 Декабря 2011, 19:10:46 | Сообщение # 14 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (Hexing) что именно тебе не понятно Ой БЕЕТЬ Кекс это Пиндец! Ты что читаешь не слева - направо а с права на лево? Ты что хочешь сказать это:Quote (Hexing) ты как гуишник и ЭТО?Quote (Hexing) пора заняться нормальным кодингом с помощью таймеров Про меня? Пи%да не надо было начинать так рано празднывать уже буквы не вижу на клаве.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Суббота, 31 Декабря 2011, 19:11:40 |
|
|
|
Hexing | Дата: Суббота, 31 Декабря 2011, 19:32:43 | Сообщение # 15 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| ой бухой) трудно с тобой говорить
|
|
|
|
Ty3uK | Дата: Суббота, 31 Декабря 2011, 19:52:16 | Сообщение # 16 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Неадекватный Лавс- это круто
|
|
|
|
FkoFF | Дата: Суббота, 31 Декабря 2011, 23:56:03 | Сообщение # 17 |
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
| Вейт может просто напросто не завершиться никогда. Да и в любом случае насилует память он ого-го как.
|
|
|
|