XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
Nekit1234007

offline
Опыт: 11,916
Активность:
call vs ExecuteFunc
Хотелось бы узнать зачем нужна функция вызова другой функции если есть оператор call?
((код jass
call FuncA()
======================
call ExecuteFunc("FuncA")
))
Как подсказывает Капитан Очевидность, эти ф-ии равноценны, но первая, я так понимаю сработает быстрее.

Отредактировано Nekit1234007, 29.11.2010 в 15:40.
Старый 21.08.2009, 09:05
SRes
1110101000
offline
Опыт: 9,997
Активность:
call проверяет на наличие вызываемой функции, а executefunc пофигист и ему плевать есть ли функция, а также горячие пирожкиаргументы он не может принимать. Если не будет вызываемой через executefunc функции - то ты получишь 100% фатал.
Старый 21.08.2009, 10:13
Van Damm
wait... what?
offline
Опыт: 22,268
Активность:
ExecuteFunc также вызывает функцию в новом потоке.
Старый 21.08.2009, 11:19
Ranger21
I love beatiul days XD
offline
Опыт: 13,274
Активность:
ExecuteFunc можно применять во время инициализации карты для снятия нагрузки на один поток, чтобы в новом потоке делать все действия (Если в инициализации карты слишком много разных действий производится в одном потоке, то какие-то из них не будут работать).
Старый 21.08.2009, 11:27
ScorpioT1000
Работаем
offline
Опыт: отключен
(Если в инициализации карты слишком много разных действий производится в одном потоке, то какие-то из них не будут работать)
что это за бред? O_O
для снятия нагрузки на один поток
тт
Старый 21.08.2009, 11:39
J
expert
offline
Опыт: 48,447
Активность:
ScorpioT1000, он сказал правильно, хотя и не только для этого
в целов екзекут нужен чтобы выполнить функцию в новом потоке, и все вытекающее из этого
Старый 21.08.2009, 11:40
ScorpioT1000
Работаем
offline
Опыт: отключен
почемуто у меня все работало всегда, может это криворукость?
Старый 21.08.2009, 11:42
J
expert
offline
Опыт: 48,447
Активность:
на каждый поток есть лимит количества выполняемых действий, если он переходится то происходит выход из потока
Старый 21.08.2009, 11:52
Ranger21
I love beatiul days XD
offline
Опыт: 13,274
Активность:
ScorpioT1000, Работает всегда ведь, но есть лимит просто на количество операций в одном потоке при загрузке карты.
Наверно ты не делал больших карт, а ещё есть вариант, что ты делал все действия после инициализации карты (Загрузки карты). (Назначение переменных, создание триггеров и т.д., куча стаффа)
Я просто написал, что с помощью ExecuteFunc можно во время загрузки карты новый поток начать.
o_O Ну J меня понял...
Старый 21.08.2009, 11:54
ScorpioT1000
Работаем
offline
Опыт: отключен
на каждый поток есть лимит количества выполняемых действий, если он переходится то происходит выход из потока
это вобще не о том, лимит там достаточно большой чтобы инициализировать все что надо
Наверно ты не делал больших карт, а ещё есть вариант, что ты делал все действия после инициализации карты (Загрузки карты). (Назначение переменных, создание триггеров и т.д., куча стаффа)
я делаю так, как считаю правильно, для каждой ситуации свое решение
Я просто написал, что с помощью ExecuteFunc можно во время загрузки карты новый поток начать.
правильней было бы сказать, что с помощью нее обычно распараллеливают инициализацию, чтобы сбалансировать ее :)
но экзекут достаточно тормознутый, кстати.
Старый 21.08.2009, 12:12
Ranger21
I love beatiul days XD
offline
Опыт: 13,274
Активность:
ScorpioT1000, Ну как я видел во всех больших картах инициализация проводится после загрузки карты (Некоторое время чёрный экран как отвлекающий манёвр и просьба подождать).
Кстати насчёт тормознутости экзекута... это точно, если его вставить куда-нибудь в инициализацию и если выполняемая функция огромная, то будет вполне заметный лаг на некоторое время.
Старый 21.08.2009, 12:18
J
expert
offline
Опыт: 48,447
Активность:
это вобще не о том, лимит там достаточно большой чтобы инициализировать все что надо
ну значит ты просто не встречался с этим, я то всего 2 раза за все вемя модмейкерства встречал
правильней было бы сказать, что с помощью нее обычно распараллеливают инициализацию, чтобы сбалансировать ее :)
что это за бред?
Кстати насчёт тормознутости экзекута... это точно, если его вставить куда-нибудь в инициализацию и если выполняемая функция огромная, то будет вполне заметный лаг на некоторое время.
от размера функции екзекут не зависит
Старый 21.08.2009, 12:24
ScorpioT1000
Работаем
offline
Опыт: отключен
что это за бред?
ну смотри у нас есть 10 библиотек, у которых свои 10 функций-инициализаторов и у нас есть main
в main экзекутим все 10 инитов и они "параллельно" начинают задавать свои значения(скажем, длинные бд) в 10 потоков.
ScorpioT1000 добавил:
хотя в принципе тут одно и тоже получается =O
Старый 21.08.2009, 12:42
J
expert
offline
Опыт: 48,447
Активность:
ScorpioT1000, в варе потоки выполняются последовательно, а не паралельно
Старый 21.08.2009, 12:51
ScorpioT1000
Работаем
offline
Опыт: отключен
тт я то не знал) кавычки ниочем не говорят?
Старый 21.08.2009, 13:21
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
ScorpioT1000, у меня при вызове 163 функций в потоке, он крашится.
Старый 21.08.2009, 17:44
adic3x

offline
Опыт: 108,439
Активность:
главное забыли - при екзекуте можно импользовать например массив строк, и вызывать функцию по индексу
Старый 21.08.2009, 18:01
PlayerDark
Coraline
offline
Опыт: 10,569
Активность:
В принципе текстмакро + экзекуте функц позволяет делать весьма любопытные вещи. К тому же с помощбю него можно вызывать функцию например из чат строки...
Старый 21.08.2009, 18:33
adic3x

offline
Опыт: 108,439
Активность:
В принципе текстмакро
причем тут это? тем более что макросы - зло, дефайны рулят
Старый 21.08.2009, 18:52
PlayerDark
Coraline
offline
Опыт: 10,569
Активность:
ADOLF, с помощью ТМ можно обьявить кучу функций и использовать как массив.
Старый 21.08.2009, 18:58
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 17:25.