Sobes.tech
Middle

Ի՞նչ կապ կա ասինխրոնության և բազմապատկման միջև։

sobes.tech AI

Պատասխան AI-ից

Ասինխրոնությունը թույլ է տալիս խուսափել հիմնական հոսքի բլոկավորումից, ազատելով այն այլ առաջադրանքների համար երկարատև մուտք/ելք գործողությունների կամ սպասման ժամանակ: Բազմահոսքային աշխատանքը, մյուս կողմից, թույլ է տալիս միաժամանակ կատարել մի քանի առաջադրանք, բաժանելով դրանք տարբեր կատարողական հոսքերի միջև:

Հարաբերությունը այն է, որ ասինխրոնային գործողությունները հաճախ իրականացնում են հոսքի բազայից (thread pool) օգտվելով: Երբ ասինխրոնային գործողությունը սպասում է իր ավարտին (օրինակ՝ պատասխան ստանալով վեբ սերվերից), բազայից հոսքը կարող է ժամանակավորապես ազատվել և օգտագործվել այլ առաջադրանքներ կատարելու համար, իսկ գործողության ավարտից հետո արդյունքը մշակվում է ազատ հոսքում, հաճախ վերադառնալով հիմնական հոսքի կոնտեքստին:

Հիմնական կետեր՝

  • Ասինխրոնություն - դա կոդի կազմակերպման ձև է, որի ժամանակ երկարատև գործողությունները չեն խոչընդոտում կատարմանը, այլ շարունակվում են ֆոնային ռեժիմում:
  • Բազմահոսքություն - դա կարող է կատարել միաժամանակ մի քանի գործողություն, օգտագործելով մի քանի կատարողական հոսքեր:
  • Ասինխրոնությունը հաճախ օգտագործում է բազմահոսքությունը իր մեխանիզմի համար, բայց դա նույնը չէ: Կարող եք ունենալ բազմահոսքային ծրագիր առանց ասինխրոնության (խոչընդոտող գործողություններ տարբեր հոսքերում) և ասինխրոնային գործողություններ, որոնք միշտ չէ, որ սկսում են նոր ֆիզիկական հոսք (օրինակ՝ օգտագործելով IOCP - Input/Output Completion Ports):

Օրինակ՝

// C#-ում ասինխրոնային գործողության օրինակ
public async Task<string> DownloadStringAsync(string url)
{
    // HttpClient իրականացնում է ասինխրոնային գործողություններ
    using var client = new HttpClient();
    // GetStringAsync մեթոդը չի խոչընդոտում կանչողի հոսքը սպասելիս
    string result = await client.GetStringAsync(url);
    return result;
}