CpuLimit
CpuLimit показывает общий и оставшийся CPU-бюджет текущего Lua-модуля. Все свойства доступны только для чтения.
Что именно ограничивается
Заголовок раздела «Что именно ограничивается»Это бюджет выполнения Lua VM, а не процент загрузки процессора компьютера. Runtime выдаёт текущему Lua-вызову лимит условных циклов и уменьшает остаток по мере выполнения инструкций. Когда бюджет исчерпан, выполнение может быть отложено или прервано механизмом лимита модуля.
Значения нужны для самоконтроля тяжёлых циклов. Чтение CpuLimit ничего не ускоряет и не резервирует дополнительное время.
Быстрый пример
Заголовок раздела «Быстрый пример»if CpuLimit.RemainingCpuTime < 0.1 then return -- отложить необязательную работуendСвойства
Заголовок раздела «Свойства»| Свойство | Тип | Доступ | Описание |
|---|---|---|---|
CpuCycleLimit |
integer |
get |
Максимальный бюджет CPU-циклов модуля на текущее выполнение. |
RemainingCpuCycles |
integer |
get |
Оставшийся бюджет в CPU-циклах. |
RemainingCpuTime |
number |
get |
Оставшаяся доля бюджета: от 0 до 1. |
local usedCycles = CpuLimit.CpuCycleLimit - CpuLimit.RemainingCpuCycleslocal remainingPercent = CpuLimit.RemainingCpuTime * 100Бюджет уменьшается во время выполнения
Заголовок раздела «Бюджет уменьшается во время выполнения»Значения отражают текущий остаток, а не постоянную характеристику устройства. В контрольном callback простой цикл из 100 итераций уменьшил RemainingCpuCycles.
Читайте остаток непосредственно перед дорогой необязательной операцией:
if CpuLimit.RemainingCpuTime >= 0.2 then -- Дополнительные расчётыendClient и Reflex server
Заголовок раздела «Client и Reflex server»API работает в обоих контекстах, но лимиты сильно различаются. Во время проверки один клиентский модуль получил 880000000, а server.lua Reflex-модуля — 1999000 циклов.
Доступ на запись
Заголовок раздела «Доступ на запись»CpuCycleLimit, RemainingCpuCycles и RemainingCpuTime являются getter-only. Попытка изменить любое из них завершается Lua access error.