Sobes.tech
Junior

Async və await açar sözləri ilə asinxron proqramlaşdırma nədir?

sobes.tech Süni İntellekt

AI-dan cavab

asyncawait ilə asinxron proqramlaşdırma, proqramın əsas icra axınını bloklamadan uzun müddət çəkə biləcək əməliyyatları (məsələn, giriş/çıxış, şəbəkə sorğuları) yerinə yetirməyə imkan verir. Bu, tətbiqin cavabvermə qabiliyyətini yaxşılaşdırır.

  • async: Bu, metodu dəyişdirmək üçün istifadə olunur və tərtibçiyə içində await operatorlarının istifadə olunacağını göstərir. async ilə işarələnmiş metod Task, Task<T> və ya void qaytara bilər (lakin void-dan qaçınılmalıdır, yalnız hadisə idarəediciləri üçün). Geri qaytarılan Task və ya Task<T> hələ tamamlanmamış əməliyyatı təmsil edir.
  • await: Bu, Task və ya Task<T> qaytaran asinxron əməliyyətə tətbiq olunur. await operatoruna çatdıqda, metod "dayandırılır" və mövcud axın sərbəst buraxılır. Asinxron əməliyyat fon rejimində (və ya işçi havuzundan istifadə edir və ya əməliyyat sisteminin giriş/çıxış mexanizmi) həyata keçirilir. Əməliyyat tamamlandıqda, metodun icrası eyni await-dən sonra başqa və ya eyni işçi üzərində davam edir, əgər mövcuddursa.

Əsas istifadə nümunəsi:

// Task qaytaran async metod
public async Task DoSomethingAsync()
{
    // Asinxron əməliyyatı yerinə yetirir və onun tamamlanmasını gözləyir
    await Task.Delay(1000); // Uzun əməliyyatın simulasyonu
    Console.WriteLine("Asinxron əməliyyat tamamlandı.");
}

// Task<int> qaytaran async metod
public async Task<int> GetValueAsync()
{
    await Task.Delay(500);
    return 42;
}

// Main metodunda async və await istifadəsi (nümunə üçün, real tətbiqlərdə adətən async Main-dən istifadə olunur .NET Core 3.0+)
public static async Task Main(string[] args)
{
    Console.WriteLine("Başlanır...");
    
    // Asinxron metodları çağırırıq
    await DoSomethingAsync();
    int result = await GetValueAsync();
    
    Console.WriteLine($"Nəticə: {result}");
    Console.WriteLine("Bitdi.");
}

async/await-in əsas üstünlüyü, əl ilə işçi axınlarını və ya callback-ləri idarə etməklə müqayisədə, asinxron kodun yazılmasını və oxunmasını sadələşdirməsidir. Bu, demək olar ki, sinxron kod kimi görünür, lakin işçi axını bloklamır və bu, istifadəçi interfeysli və ya yüksək yüklü server tətbiqləri üçün çox vacibdir.