Sobes.tech
Junior — Middle

Ինչպես է տարբերակվում կուռուտինների և թելերի օգտագործումը ասինխրոնային առաջադրանքների իրականացման ժամանակ։

sobes.tech AI

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

Տարրեր (Threads) — դա համակարգային օբյեկտներ են, որոնք թույլ են տալիս միաժամանակ կատարել մի քանի առաջադրանք, յուրաքանչյուրը իր սեփական կանչերի պատյանով և կատարման կոնտեքստով: Տարրերի ստեղծումը և փոխարկումը բավականին ռեսուրսային է, և մեծ թվով տարրեր ունենալու դեպքում կարող է առաջանալ ավելորդ բեռ:

Կորուտիններ (Coroutines) — դա թեթև կոմպոնենտներ են, որոնք թույլ են տալիս դադարեցնել և վերականգնել ֆունկցիաների կատարմանը առանց նոր տարրեր ստեղծելու: Դրանք աշխատում են մեկ կամ մի քանի տարրերի շրջանակում, բայց թույլ են տալիս գրել ասինխրոն կոդը հերթական և արդյունավետ կերպով կառավարել առաջադրանքները առանց բլոկավորումների:

Հիմնական տարբերությունները՝

  • Տարրերը ծանր են, կորուտինները՝ թեթև:
  • Տարրերը պահանջում են կոնտեքստի փոխարկում օպերացիոն համակարգի մակարդակով, կորուտինները՝ լեզվի մակարդակով:
  • Կորուտինները հեշտացնում են ասինխրոն կոդի գրառումը և դարձնում այն ընթեռնելի:

Օրինակ՝ Kotlin-ով Android-ի համար կորուտին:

GlobalScope.launch(Dispatchers.IO) {
    val data = fetchDataFromNetwork() // ասինխրոն օպերացիա
    withContext(Dispatchers.Main) {
        updateUI(data)
    }
}