THE ORB
Studio wird gestartet

Thread-Stall / eine Resource braucht zu lange

Ein Script hat alles aufgehalten. Anders als ein allgemeiner Ruckler nennt dieser die verantwortliche Resource.

groupsRuckler und Lag-SpitzencodeBraucht einen Entwickler

Mach das zuerst

Notier die genannte Resource — dort liegt das Problem.

bug_reportFüg lieber deine ganze Konsole ein

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. 1

    Eine Schleife ohne Wait

    Der Klassiker. while true do end gibt die Kontrolle nie zurück.

  2. 2

    Ein blockierendes await in einem Tick

    MySQL.query.await oder Citizen.Await in einem Thread, der jeden Frame läuft.

  3. 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. 4

    Eine while-Schleife, deren Bedingung nie erfüllt wird

    while not HasModelLoaded(m) do Wait(0) end für ein nicht existierendes Modell dreht sich endlos. Jedes solche Warten braucht eine Frist.

  5. 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 end

Und verteil sehr große Arbeit über mehrere Frames:

for i = 1, #huge do
    process(huge[i])
    if i % 500 == 0 then Wait(0) end
end

Hä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 öffnen

Für diese Art Fehler Script Optimizer findet, was dich Frames kostet, und schreibt es um.

Fehler, die mit diesem zusammen auftreten