Impregnable | Дата: Вторник, 09 Октября 2012, 12:40:58 | Сообщение # 1 |
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
| Данная статься предназначена только для общего обогащения, поэтому решайте сами стоит ли вам тратить на это время.
Речь пойдет о гениальных программистах Blizzard, а точнее о том, что они сделали. А сделали они довольно много полезного, и все для того, чтобы нам было удобнее кодить. Все перечислять не буду, уж слишком много пришлось бы печатать. А сейчас о:
Принудительное завершение потока Вы никогда не задумывались почему War3 никогда не зависает выполняя бесконечные циклы? Оказывается, Близы знали, что мы не умеем кодить, поэтому им надо было как-то уберечь нас от постоянного запуска "Диспетчера задач". И был введен счетчик, который достигая значения 300.000 завершает поток. Так от чего же увеличивается значение счетчика? Да, от всех операторов. Ниже показано что и сколько добавляет (назовем) ESP(End Stream Points).
отсутствие .(это точка) для real - 1 ESP +, -, /, * - 4 ESP + для строковых констант (пример: s + " hello") - 0 ESP ==, !=, >, <, >=, <= - 4 ESP and, or - 3 ESP not - 1 ESP
============================================================================ call - 1 ESP local - 1 ESP =/set - 2 ESP
============================================================================ //Переменные обращение к переменной - 0 ESP обращение к массиву переменных - 1 ESP
============================================================================ //условие if - 1 ESP else - 0 ESP elseif проверка условия - 3 ESP первый elseif у которого условие не проверялось - 2 ESP все последующие elseif у которых условие не проверялось - 3 ESP примеры: Code if true then = 1 ESP ... elseif ... = 2 ESP ... elseif ... = 0 ESP endif Code if false then = 1 ESP ... elseif false then = 3 ESP ... elseif true then = 3 ESP ... elseif false then = 2 ESP ... elseif ... then = 0 ESP ... endif Code if false then = 1 ESP ... elseif false = 3 ESP ... elseif false = 3 ESP ... else = 0 ESP ... endif ============================================================================ //цикл loop - 1 ESP exitwhen даже, если не дошло - 2 ESP пример: Code loop = 1 ESP exitwhen ... = 2 ESP
if false then = 1 ESP exitwhen ... = 2 ESP exitwhen ... = 2 ESP endif endloop ============================================================================ //Вызов функций в файле скрипта call <funcname> (takes nothing) - 2 ESP (без учета call) call <funcname> (takes ...) - 1 ESP и по 3 ESP за каждый аргумент (без учета call) call <funcname> (... returns <type>) - 1 ESP (без учета call) return - 0 ESP return <type> (даже, если не дошло как exitwhen) - 1 ESP
============================================================================ //Вызов native функций каждый аргумент - 2 ESP пример: Code CreateUnit(pl, 'hpea', 0., 0., 0.) = 10 ESP
Если долго мучиться, то может, все равно нихуя не получится.
Сообщение отредактировал SirNikolas - Вторник, 09 Октября 2012, 13:05:01 |
|
|
|
Ty3uK | Дата: Вторник, 09 Октября 2012, 12:55:19 | Сообщение # 2 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| можно вытащить из-под спойлера? с телефона он не открывается
|
|
|
|
SirNikolas | Дата: Вторник, 09 Октября 2012, 13:05:12 | Сообщение # 3 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Можно еще добавить, что завершение потока происходит при делении на ноль (неважно, целочисленном или действительном), обращении к неинициализированной переменной, не являющейся массивом и (точные условия не выяснены) вызове TriggerSleepAction.
Добавлено (09 Октября 2012, 13:05:12) --------------------------------------------- Вытащил.
|
|
|
|
Ty3uK | Дата: Вторник, 09 Октября 2012, 13:11:42 | Сообщение # 4 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| я так повесил поток, вызвав ХэндлИд на переменную без значения
последующее действие зациклилось (удаление создающегося эффекта)
|
|
|
|
SirNikolas | Дата: Среда, 10 Октября 2012, 10:52:14 | Сообщение # 5 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| By the way, потоки исполнения обычно называют тредами, а не стримами.
|
|
|
|
Impregnable | Дата: Среда, 10 Октября 2012, 13:13:12 | Сообщение # 6 |
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
| Quote (SirNikolas) потоки исполнения обычно называют тредами Точно. Вспомнил.
Если долго мучиться, то может, все равно нихуя не получится.
|
|
|
|