Junior
Async və await açar sözləri ilə asinxron proqramlaşdırma nədir?
sobes.tech Süni İntellekt
AI-dan cavab
async və await 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əawaitoperatorlarının istifadə olunacağını göstərir.asyncilə işarələnmiş metodTask,Task<T>və yavoidqaytara bilər (lakinvoid-dan qaçınılmalıdır, yalnız hadisə idarəediciləri üçün). Geri qaytarılanTaskvə yaTask<T>hələ tamamlanmamış əməliyyatı təmsil edir.await: Bu,Taskvə yaTask<T>qaytaran asinxron əməliyyətə tətbiq olunur.awaitoperatoruna ç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ı eyniawait-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.