Zawieszenie wątku / zasób zajmuje za dużo czasu
Jeden skrypt zatrzymał wszystko. W przeciwieństwie do zwykłego przycięcia ten wymienia odpowiedzialny zasób.
Zrób najpierw to
Zanotuj zasób, który wymienia — tam jest problem.
Co to znaczy
Wątek skryptu nie oddał sterowania wtedy, kiedy scheduler tego oczekiwał. Wszystko inne po tej stronie czeka. Podobnie jak hitch warning to objaw, a nie awaria, ale zawieszenie zwykle wskazuje na jeden konkretny kawałek kodu, a nie na ogólne obciążenie.
Co to powoduje
Uszeregowane według tego, jak często są odpowiedzią.
- 1
Pętla bez Waita
Klasyk.
while true do endnigdy nie oddaje sterowania. - 2
Blokujące await wewnątrz ticka
MySQL.query.awaitalboCitizen.Awaitwewnątrz wątku wykonującego się w każdej klatce. - 3
Ogromna operacja synchroniczna
Kodowanie albo dekodowanie bardzo dużego JSON-a lub iterowanie po tablicy z setkami tysięcy wpisów, wszystko naraz.
- 4
Pętla while, której warunek nigdy nie zostaje spełniony
while not HasModelLoaded(m) do Wait(0) enddla modelu, który nie istnieje, kręci się w nieskończoność. Każde takie czekanie potrzebuje terminu. - 5
Rekurencja bez przypadku bazowego
Rzadkie, ale wygląda dokładnie tak samo.
Jak poznać, który jest twój
Komunikat nazywa zasób. W jego środku poszukaj while i for bez Wait oraz każdego .await wewnątrz CreateThread.
Gdzie szukać
Każda pętla w nazwanym zasobie.
Jak to naprawić
Daj każdemu czekaniu termin i oddawaj sterowanie w każdej pętli:
local deadline = GetGameTimer() + 5000
while not HasModelLoaded(model) and GetGameTimer() < deadline do
Wait(0)
end
if not HasModelLoaded(model) then return endRozbij bardzo dużą pracę na klatki:
for i = 1, #huge do
process(huge[i])
if i % 500 == 0 then Wait(0) end
endWciąż utknąłeś na własnym kodzie?
Ta strona mówi, co ten błąd zwykle oznacza. Wklej swoją konsolę do Server Fixera, a uszereguje wszystko, co w niej jest, i powie, co zrobić najpierw; a jeśli wolisz tego nie ruszać, ORBIE naprawi skrypt i odda ci zasób gotowy do wrzucenia.
bug_reportOtwórz Server FixerDla tego rodzaju błędu Script Optimizer znajduje to, co kosztuje cię klatki, i przepisuje.