27.10.2017, 21:01
Quote:
Тут двояко на тему эффективности, в однопоточном программировании есть понятие прерывания, так вот, первый вариант - в плане скорости и использования процессорного времени - шикарен, ибо каждый таймер, не занимает единовременно все процессорное время на себя. Второй случай имеет смысл использовать только если онвехиклапдейт очень легкая функция, ибо в противном случае, каждые пол секунды ты будешь прилично единовременно забирать процессорное время, и пока твой цикл не обработается, ничего другого выполнятся не будет.
Как быстро переполнится? Ну давай приблизительно, 2 000 000 000 / 4000 / 60 / 60 =138 часов ~ |
PHP Code:
public OnGameModeInit()
{
for (new i; i < MAX_VEHICLES; i++)
{
Vehicle::Data[i][vehicleTickRate] = DEFAULT_VEHICLE_TICK_RATE;
SetTimerEx("OnVehicleTickRate", Vehicle::Data[i][vehicleTickRate], false, "d", i);
}
#if defined vehicle_OnGameModeInit
return vehicle_OnGameModeInit();
#else
return true;
#endif
}
#if defined _ALS_OnGameModeInit
#undef OnGameModeInit
#else
#define _ALS_OnGameModeInit
#endif
#define OnGameModeInit vehicle_OnGameModeInit
#if defined vehicle_OnGameModeInit
forward vehicle_OnGameModeInit();
#endif
forward OnVehicleTickRate(vehicle);
public OnVehicleTickRate(vehicle)
{
if (Vehicle::Data[vehicle][vehicleExists])
{
CallLocalFunction("OnVehicleUpdate", "d", vehicle);
}
return SetTimerEx("OnVehicleTickRate", Vehicle::Data[vehicle][vehicleTickRate], false, "d", vehicle);
}