Выполнение какой либо функции
|
|
serm
|
Дата: Понедельник, 15.09.2014, 10:08:28 | Сообщение # 1 |
|
Сообщений: 137
Репутация: 7 [ +/- ]
|
|
Смотрите , есть функция например Код
public FirstFunc(){ // Например ставлю на выполнение функцию MyFunc() MyFunc(client1); // И еще раз ставлю эту же функцию на выполнение MyFunc(client2); }
public MyFunc(client){ // Тут код какой нибудь new i_health; // Допустим тут у нас здоровье клиента }
В чем собственно вопрос, функция MyFunc выполняется 2 раза за 1 тик игры. В функции хранится например информация от игрока 1 и игрока 2 . Возможно ли такое, что в функции запущенной первее второй например изменится переменная i_health (с учетом того, что первая функция еще не закончила свое выполнение) ?
Повторю для простых людей : Первая функция выполняется , следом вторая . Первая функция еще не закончила свое выполнение как вторая уже изменяет нашу переменную i_health . Итог, при завершении выполнении первой функции у нас показатель здоровья i_health имеет значение от второй функции .
Думаю будет понятен мой вопрос
|
|
| |
_wS_
|
Дата: Понедельник, 15.09.2014, 10:43:39 | Сообщение # 2 |
|
Думаю такого не может быть, код же по идее выполняется в порядке очереди сверху вниз, а имя функции работает как include, подставляет код из функции, и в порядке очереди он выполняется. У меня тож бывают сомнения, например есть while цикл, а ниже код (за пределами цикла), думаю успеет ли весь код выполниться в этом while цикле, или же может случиться так, что while еще работает, а код ниже уже выполнился. Проверить затестить несложно ж.
|
|
| |
BarD
|
Дата: Понедельник, 15.09.2014, 11:30:53 | Сообщение # 3 |
|
Сообщений: 943
Репутация: 137 [ +/- ]
|
|
Так у тебя же в каждой функции создается новая переменная i_health. Как она может поменяться, если работает отдельно?)
|
|
| |
serm
|
Дата: Понедельник, 15.09.2014, 12:32:51 | Сообщение # 4 |
|
Сообщений: 137
Репутация: 7 [ +/- ]
|
|
Цитата BarD ( ) Думаю такого не может быть, код же по идее выполняется в порядке очереди сверху вниз, а имя функции работает как include, подставляет код из функции, и в порядке очереди он выполняется. У меня тож бывают сомнения, например есть while цикл, а ниже код (за пределами цикла), думаю успеет ли весь код выполниться в этом while цикле, или же может случиться так, что while еще работает, а код ниже уже выполнился. Проверить затестить несложно ж. Вот я и не могу понять тоже . А если например во время выполнения функции (лаганет или что нибудь подобное ...)Цитата BarD ( ) Так у тебя же в каждой функции создается новая переменная i_health. Как она может поменяться, если работает отдельно?) Это да , что то я не подумал об этом :)
|
|
| |
хвостег
|
Дата: Вторник, 16.09.2014, 09:29:03 | Сообщение # 5 |
|
Сообщений: 161
Репутация: 53 [ +/- ]
|
|
К сожалению в сурс павне есть сбои выполнения, это происходит ооооооооочень редко, однако это очень неприятное явление. Как обойти? 1 - нужно быть на 100% уверенным, что сбой произошел. 2 - отправить кусок оборванного кода в следующий фрейм.
Приведу пример сбоя.
public Func() { // тут куча стандартных функций // ... выполняется исправно // ... выполняется исправно // ... выполняется исправно // ... выполняется исправно // ... выполняется исправно TeleportEntity(...) - Сбой выполнения (по логике вещей она должна была выполниться корректно, однако она как бы выполнилась, но без результата, либо с некорректным результатом *все входные данные при этом абсолютно верны*) *Функция может быть любой, телепорт ентити просто для примера* // опять куча стандартных функций // ... выполняется исправно // ... выполняется исправно // ... выполняется исправно }
Сообщение отредактировал хвостег - Вторник, 16.09.2014, 09:40:18 |
|
| |