Sobes.tech
Middle

Asinxronluq və çox ipliklilik arasındakı əlaqə nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Asinxronluq əsas axını bloklamadan qarşısını almağa imkan verir və uzunmüddətli giriş/çıxış əməliyyatları və ya gözləmə zamanı onu digər tapşırıqlar üçün sərbəst buraxır. Çox ipli işləmə isə, bir neçə tapşırığı paralel şəkildə yerinə yetirməyə və onları müxtəlif icra axınlarına bölməyə imkan verir.

Əlaqə ondan ibarətdir ki, asinxron əməliyyatlar tez-tez ip havuzundan (thread pool) istifadə etməklə həyata keçirilir. Bir asinxron əməliyyat tamamlanmasını gözləyərkən (məsələn, veb serverdən cavab alma zamanı), havuzdan bir ip müvəqqəti olaraq sərbəst buraxıla və digər tapşırıqları yerinə yetirmək üçün istifadə oluna bilər, və əməliyyat tamamlandıqdan sonra nəticə sərbəst ipdə işlənir, çox vaxt əsas ip kontekstinə geri qaytarılır.

Əsas nöqtələr:

  • Asinxronluq - uzunmüddətli əməliyyatların icrasını bloklamayan və fon rejimində davam edən kod təşkil etmək üsuludur.
  • Çox ipli işləmə - bir vaxtda bir neçə əməliyyatı yerinə yetirmək qabiliyyətidir, çoxlu icra axınlarından istifadə etməklə.
  • Asinxronluq çox vaxt çox ipli işləmə ilə işləyir, amma onlar eyni şey deyil. Siz çox ipli tətbiq edə bilərsiniz, amma asinxronluq olmadan (fərqli iplərdə bloklayan əməliyyatlar) və ya hər zaman yeni fiziki ip başlatmayan asinxron əməliyyatlar (məsələn, IOCP - Input/Output Completion Ports istifadə edilərək).

Nümunə:

// C#-da asinxron əməliyyat nümunəsi
public async Task<string> DownloadStringAsync(string url)
{
    // HttpClient asinxron əməliyyatlar həyata keçirir
    using var client = new HttpClient();
    // GetStringAsync metodu cavab gözləyərkən çağıran ipi bloklamır
    string result = await client.GetStringAsync(url);
    return result;
}