THE ORB
Studio başlatılıyor

Thread takılması / bir kaynak fazla uzun sürüyor

Tek bir script her şeyi bekletti. Genel bir takılmadan farklı olarak bu, sorumlu kaynağı adlandırır.

groupsTakılmalar ve gecikme sıçramalarıcodeGeliştirici gerektirir

Önce şunu yap

Adlandırdığı kaynağı not et — sorun oradadır.

bug_reportBunun yerine tüm konsolunu yapıştır

Ne anlama gelir

Bir script thread'i, zamanlayıcının beklediği yerde yield etmedi. O taraftaki diğer her şey bekler. Bir hitch warning gibi bu da bir arıza değil bir belirtidir, ama bir takılma genelde genel yük yerine belirli bir kod parçasını işaret eder.

Neden olur

Ne sıklıkla doğru cevap olduğuna göre sıralı.

  1. 1

    Wait'siz bir döngü

    Klasik olan. while true do end denetimi hiç geri vermez.

  2. 2

    Bir tick içinde engelleyen bir await

    Her karede çalışan bir thread'in içinde MySQL.query.await ya da Citizen.Await.

  3. 3

    Devasa bir eşzamanlı işlem

    Çok büyük bir JSON yükünü tek seferde kodlamak ya da çözmek, ya da yüz binlerce girdisi olan bir tabloyu dolaşmak.

  4. 4

    Koşulu hiç sağlanmayan bir while döngüsü

    Var olmayan bir model için while not HasModelLoaded(m) do Wait(0) end sonsuza kadar döner. Böyle her beklemenin bir son tarihe ihtiyacı vardır.

  5. 5

    Taban durumu olmayan özyineleme

    Nadirdir, ama tam olarak böyle görünür.

Hangisinin seninki olduğu nasıl anlaşılır

Mesaj kaynağı adlandırır. İçinde, Wait içermeyen while ve for döngülerine, ve bir CreateThread içindeki her .awaite bak.

Nereye bakmalı

Adı geçen kaynaktaki her döngü.

Nasıl düzeltilir

Her beklemeye bir son tarih ver, ve her döngüde yield et:

local deadline = GetGameTimer() + 5000
while not HasModelLoaded(model) and GetGameTimer() < deadline do
    Wait(0)
end
if not HasModelLoaded(model) then return end

Çok büyük işi karelere böl:

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

Hâlâ kendi kodunda mı takıldın?

Bu sayfa, bu hatanın genelde ne anlama geldiğini anlatır. Konsolunu Server Fixer'a yapıştır; içindeki her şeyi sıraya dizer ve önce ne yapman gerektiğini söyler. Kendin uğraşmak istemiyorsan ORBIE script'i onarır ve kaynağı sunucuna atmaya hazır geri verir.

bug_reportServer Fixer'ı aç

Bu tür bir hata için Script Optimizer sana kare kaybettiren şeyi bulur ve yeniden yazar.

Bununla birlikte gelen hatalar