sync
ifadesini kullanarak iki veya daha fazla asenk ifadesini aynı anda çalıştırabilirsin. Örneğin:
# Üç asenk fonksiyonu da efektif bir şekilde aynı anda başlar
Results = sync:
AsyncFunction1() # görev 1
AsyncFunction2() # görev 2
AsyncFunction3() # görev 3
# Üç görevin hepsi tamamlandığında (sıraya bakılmaksızın) çağrılır
MyLog.Print(“Sonuç listesiyle tamamlandı: {Results}”)
Aşağıdaki kod, ifadelerin yürütme akışını gösteren bir yardımcı diyagramla birlikte sync
ifadesinin sözdizimini gösterir.
expression0
sync:
slow-expression
mid-expression
fast-expression
expression1

Sync İfadesinin Kullanımı
Bir sync ifadesini kullanabildiğin yerler |
Asenk. bağlamlar |
sync ifadesinin çağrı süresi |
Asenk. |
sync kod bloku gereksinimleri |
sync ifadesinin gövdesinde asenk olan en az iki ifade olmalıdır aksi takdirde ifadeleri aynı anda çalıştırman gerekmez. |
sync ifadesinin fonksiyonu |
Kod blokundaki tüm ifadeleri eşzamanlı olarak yürütür ve sync ifadesinden bir sonraki ifadeyi yürütmeden önce hepsinin tamamlanmasını bekler. |
sync ifadesi tamamlandığında |
sync kod blokundaki tüm ifadeler tamamlandığında. |
sync ifadesi tamamlandığında |
sync kod blokundaki tüm ifadeler tamamlandığında. |
sync ifadesinin sonucu: Sonucu, üst düzey ifadelerin belirtildiği sırayla her bir ifadeden alınan sonuçların bir demetidir. İfadelerin sonuç türleri herhangi bir türde olabilir ve her demet öğesi, kendisine karşılık gelen ifadenin türünde olur. |
En az iki üst düzey ifade asenk olmalıdır.
sync:
AsyncFunction1()
MyLog.Print(“İkinci üst düzey ifade”)
AsyncFunction2()
MyLog.Print(“Üçüncü üst düzey ifade”)
sync:
AsyncFunction1()
# Hata: En az iki üst düzey ifade bekleniyordu
Üst düzey ifadeler, iç içe kod blokları gibi bileşik ifadeler olabilir:
# sync ifadesi de her bir üst düzey ifadenin
# kendi görev blokuna sahip olduğu bileşik ifadeler içerebilir
sync:
blok: # görev 1
# Seri düzende değerlendirilir
AsyncFunction1a()
AsyncFunction1b()
blok: # görev 2
AsyncFunction2a()
AsyncFunction2b()
AsyncFunction2c()
AsyncFunction3() # görev 3
# AsyncFunction1a(), AsyncFunction2a() ve AsyncFunction3() temel olarak aynı zamanda başlar
Demetler kendiliğinden yayılan bağımsız değişkenler olduğu için sync
ifadeleri bir demet sonucuna sahip olması nedeniyle doğrudan bağımsız değişkenler olarak kullanılabilir. Bu durum, asenkronize bağımsız değişkenlerin eşzamanlı olarak değerlendirmesine olanak tanır ve senk kod blokundaki tüm ifadeler tamamlandığında bağımsız değişkenlerin geçirildikleri fonksiyon çağrılır.
# Üç eş yordam bağımsız değişkeninin tümü, değerlendirmelerine aynı anda başlar
DoStuff(sync{AsyncFunctionArg1(); AsyncFunctionArg2(); AsyncFunctionArg3()})
# Her bağımsız değişkenin asenk olması gerekmez; en az iki tanesi senk kullanımı için yeterlidir
DoOtherStuff(sync{AsyncFunctionArg1(); 42; AsyncFunctionArg2(); AsyncFunctionArg3()})