Thread-Stall / eine Resource braucht zu lange
Ein Script hat alles aufgehalten. Anders als ein allgemeiner Ruckler nennt dieser die verantwortliche Resource.
Mach das zuerst
Notier die genannte Resource — dort liegt das Problem.
Was es bedeutet
Ein Script-Thread hat nicht abgegeben, als der Scheduler es erwartete. Alles andere auf dieser Seite wartet. Wie die Hitch-Warnung ist das ein Symptom und kein Ausfall, aber ein Stall zeigt meist auf ein bestimmtes Stück Code statt auf allgemeine Last.
Was es auslöst
Sortiert danach, wie oft es die Antwort ist.
- 1
Eine Schleife ohne Wait
Der Klassiker.
while true do endgibt die Kontrolle nie zurück. - 2
Ein blockierendes await in einem Tick
MySQL.query.awaitoderCitizen.Awaitin einem Thread, der jeden Frame läuft. - 3
Eine riesige synchrone Operation
Ein sehr großes JSON kodieren oder dekodieren oder eine Tabelle mit hunderttausenden Einträgen in einem Rutsch durchlaufen.
- 4
Eine while-Schleife, deren Bedingung nie erfüllt wird
while not HasModelLoaded(m) do Wait(0) endfür ein nicht existierendes Modell dreht sich endlos. Jedes solche Warten braucht eine Frist. - 5
Rekursion ohne Abbruchbedingung
Selten, aber es zeigt sich genau so.
Wie du erkennst, welcher deiner ist
Die Meldung nennt die Resource. Such darin nach while und for ohne Wait und nach jedem .await innerhalb eines CreateThread.
Wo du nachsehen musst
Jede Schleife in der genannten Resource.
Wie du es behebst
Gib jedem Warten eine Frist und in jeder Schleife ab:
local deadline = GetGameTimer() + 5000
while not HasModelLoaded(model) and GetGameTimer() < deadline do
Wait(0)
end
if not HasModelLoaded(model) then return endUnd verteil sehr große Arbeit über mehrere Frames:
for i = 1, #huge do
process(huge[i])
if i % 500 == 0 then Wait(0) end
endHängst du immer noch an deinem eigenen Code?
Diese Seite sagt, was dieser Fehler üblicherweise bedeutet. Füg deine Konsole in Server Fixer ein: es sortiert alles darin und sagt dir, was zuerst dran ist; und wenn du lieber nicht ranwillst, kann ORBIE das Script reparieren und dir die Resource fertig zum Einsetzen zurückgeben.
bug_reportServer Fixer öffnenFür diese Art Fehler Script Optimizer findet, was dich Frames kostet, und schreibt es um.