task
*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.
Görev kütüphanesi, motorun planlayıcısıyla işlevlerin ve iş parçacıklarının planlanmasına izin verir.
Bu kütüphanedeki işlevler genellikle işlevleri ve iş parçacıklarını destekler.Çoğu durumda bir işlev kullanmak yeterlidir, ancak daha gelişmiş durumlar için kendinizi coroutine kütüphanesi ile tanımanız önerilir.
Özet
İşlevler
İşlev/korutin hemen motorun planlayıcısı aracılığıyla çağrılar/devam eder.
Mevcut yeniden başlatma döngüsünün sonunda bir işlev/korutin çağrısı/yeniden başlatmasını yapar.
Verilen süre (saniyeler) geçtikten sonra bir işlev/rutinin çağrılmasını/yeniden başlatılmasını planlar ve kısıtlamaya izin vermez.
Aşağıdaki kodun paralel olarak çalışmasına neden olur.
Aşağıdaki kodun seri olarak çalışmasına neden olur.
Sınırlama olmadan mevcut iş parçasını verir.
Bir iptal iptal eder, yeniden başlatılmasını engeller.
İşlevler
spawn
Bir işlevi veya bir iş parçacığını ( tarafından döndürüldüğü gibi) kabul eder ve motorun planlayıcısı aracılığıyla hemen çağrır/yeniden başlatır.İlkten sonraki argümanlar işlev/ipucuna gönderilir.
Eğer çağrılan senaryo şu anda seri bir çalışma aşamasında çalışıyorsa, oluşturulan işlev veya iş parçacığı mevcut seri çalışma aşamasında yeniden başlatılır.Eğer çağrılan senaryo şu anda paralel bir çalışma aşamasında çalışıyorsa, oluşturulan işlev veya iş parçacığı mevcut paralel çalışma aşamasında yeniden başlatılır.Daha fazla bilgi için, Paralel Luau görün.
Parametreler
coroutine.create() tarafından döndürülen bir işlev veya bir işlem başlığı.
İşlev veya iş parçasına göndermek için argümanlar.
Dönüşler
Planlanan işlem.
defer
Bir işlevi veya bir iş parçacığını (coroutine.create() tarafından döndürüldüğü gibi) kabul eder ve mevcut çerçevenin içindeki mevcut duraklama noktasının sonuna kadar erteletir.
Bu işlev, task.spawn() benzer bir davranış gerektiğinde kullanılmalıdır, ancak işletimin hemen çalışması gerekmez.
Çağrı yazılımı şu anda seri bir çalışma aşamasında çalışıyorsa, gecikmiş işlev veya iş parçacığı seri bir çalışma aşamasında yeniden başlatılır.Eğer çağrılan senaryo şu anda paralel bir yürütme aşamasında çalışıyorsa, gecikmiş işlev veya iş parçacığı paralel bir yürütme aşamasında yeniden başlatılır.Daha fazla bilgi için, Paralel Luau görün.
Parametreler
Dönüşler
Planlanan işlem.
delay
Bir işlevi veya bir iş parçacığını (coroutine.create() tarafından döndürüldüğü gibi) kabul eder ve belirlenen süre (saniyeler içinde) sonra bir sonraki Heartbeat ardından çağrılmasını veya yeniden başlatılmasını planlar.İkinci sonra gelen argümanlar işlev/ipucuna gönderilir.
Bu işlev, delay() **** fonksiyonundan farklıdır, çünkü Heartbeat adımlarda, işlevin çağrılması/yeniden başlatılması garanti edilir.Sıfır süresi sağlanması ( 0 ), işlevin bir sonraki Heartbeat 'de çağrılacağını garanti edecektir.
Planlama sırasında ve planlanan işlevde os.clock() 'yi arayarak gerçek süreyi hesaplayabilirsiniz.
Çağrı yazılımı şu anda seri bir çalışma aşamasında çalışıyorsa, gecikmiş işlev veya iş parçacığı seri bir çalışma aşamasında yeniden başlatılır.Çağrı yazılımı şu anda paralel bir yürütme aşamasında çalışıyorsa, gecikmiş işlev veya iş parçacığı paralel bir yürütme aşamasında yeniden başlatılır.Daha fazla bilgi için, Paralel Luau görün.
Parametreler
Dönüşler
Planlanan işlem.
desynchronize
Eğer çağrılan kod şu anda seri bir çalışma aşamasında çalışıyorsa, desynchronize() kodu askıya alır ve kod bir sonraki paralel çalışma aşamasında yeniden başlatılacaktır.Çağrı yazılımı şu anda paralel bir çalışma aşamasında çalışıyorsa, desynchronize() hemen döner ve etkisi yoktur.
Sadece bir Actor 'in soyundan gelen yalnızca senaryolar bu yöntemi çağırabilir.Bir Actor dışındaki bir senaryo bu yöntemi çağırırsa, bir hata oluşur.ModuleScripts modülün çağrıldığı anının bir desynchronize() 'in soyundan gelen bir senaryo tarafından gerekli olduğu sürece çağrılabilir Actor .
Daha fazla bilgi için, Paralel Luau görün.
Dönüşler
synchronize
Eğer çağrılan kod şu anda paralel bir yürütme aşamasında çalışıyorsa, synchronize() kodu askıya alır ve kod bir sonraki seri yürütme aşamasında yeniden başlatılacaktır.Eğer çağrı yazılımı şu anda seri bir çalışma aşamasında çalışıyorsa, synchronize() hemen döner ve etkisi yoktur.
Sadece bir Actor 'in soyundan gelen yalnızca senaryolar bu yöntemi çağırabilir.Bir Actor dışındaki bir senaryo bu yöntemi çağırırsa, bir hata oluşur.ModuleScripts modülün çağrıldığı anının bir synchronize() 'in soyundan gelen bir senaryo tarafından gerekli olduğu sürece çağrılabilir Actor .
Daha fazla bilgi için, Paralel Luau görün.
Dönüşler
wait
Verilen süre (saniyeler) dolana kadar mevcut iş parçasını verir, ardından bir sonraki Heartbeat adımda iş parçasını yeniden başlatır.Gerçek süre geçmişi döndürülür.
Bir süre verilmezse, varsayılan olarak sıfıra düşecektir ( 0 ).Bu, işletmenin sonraki adımda yeniden başladığını gösterir, bu da davranış açısından Class.RunService.Heartbeat:Wait() ile eşdeğerdir
Eskitilmiş küresel wait() 'den farklı olarak, bu işlev yavaşlatmıyor ve gerektiğinde gerçekleşen ilk Kalp atışındaki işin yeniden başlatılmasını garanti ediyor.Bu işlev sadece geçen süre ve başka bir şey dönmez.
Çağrı yazılımı şu anda seri bir çalışma aşamasında çalışıyorsa, yazılım seri bir çalışma aşamasında yeniden başlatılır.Eğer çağrı yazılımı şu anda paralel bir yürütme aşamasında çalışıyorsa, yazılım paralel bir yürütme aşamasında yeniden başlatılır.Daha fazla bilgi için, Paralel Luau görün.
Parametreler
Mevcut işlem yeniden başlamadan önce geçmesi gereken saniye sayısı. The amount of time in seconds that should elapse before the current thread is resumed.
Dönüşler
cancel
Bir iptal iptal eder ve bir iptali manuel olarak veya motorun planlayıcısı tarafından yeniden başlatılmasını engeller.
Bu işlev, onları durdurmak için önce yeniden başlatılmadan iptal etmek için görev kütüphanesinin diğer üyeleriyle birlikte kullanılabilir. Örneğin:
local thread = task.delay(5, function()
print("Hello world!")
end)
task.cancel(thread)
İptal edilemez bir durumda olabilecek iş parçacıklarının bir durumda olabileceğini unutmayın.Örneğin, şu anda yürütülen iş parçacığı ve başka bir korutin yeniden başlatılan iş parçacıkları iptal edilemeyebilir.Eğer durum buysa, bir hata oluşturulur.Ancak, kod başarısız olmasına neden olan belirli işletim durumlarına veya koşullara güvenmemelidir.Gelecekteki güncellemeler bu kısıtları ortadan kaldırır ve bu durumdaki işlemlerin başarıyla iptal edilmesine izin verir.
Parametreler
İptal edilecek olan işlemci.