fbpx

Асинхрон программчлал нь олон процессыг бие биеэ хаахгүйгээр бие даан ажиллуулах боломжийг олгодог. Асинхрон кодын хувьд мэдэгдэл нь ажиллахаасаа өмнө бусад процессууд дуусахыг хүлээх шаардлагагүй. Синхрон гэдэг нь кодыг дээрээс доош нь дараалан гүйцэтгэхийг хэлнэ. Зааварчилгаа бүрийг дараагийнх нь эхлэхээс өмнө дуусгадаг гэдгийг бид өмнөх нийтлэлээрээ мэдэж авсан. Өмнөх нийтлэл уншихыг хүсвэл энд дарна уу. Өнөөдрийнхөө нийтлэлээр бид хэрхэн асинхрон программчлал хийх болон давуу талыг нь мэдэж авах болно.

 

Асинхрон программчлалын давуу талууд нь:

  1. Гүйцэтгэлийн өндөр үр ашиг
    Асинхрон программчлал нь олон үйлдлийг нэгэн зэрэг гүйцэтгэх боломжийг олгодог тул процессорын нөөцийг үр дүнтэй ашиглана. Энэ нь удаан ажилладаг (жишээ нь, сүлжээний хүсэлт, файл унших/бичих) үйлдлүүдэд хүлээж суухын оронд бусад ажлыг үргэлжлүүлэн гүйцэтгэх боломжийг олгоно.
  2. Хариу өгөх чадвар сайжирна
    Асинхрон программчлал нь хэрэглэгчийн интерфейсийг хурдан хариу үйлдэлтэй болгодог. Хэрэглэгчид удаан үйлдлүүдийн хүлээлтэд сааталгүй, бусад функцүүдийг хэрэглэх боломжтой болно.
  3. Олон процесс эсвэл урсгал ашиглах шаардлагагүй
    Асинхрон программчлал нь нэг процесс эсвэл урсгалд олон ажлыг зэрэглүүлэн гүйцэтгэдэг тул системийн нөөцийг хэмнэнэ. Энэ нь олон урсгалтай программчлалын үеийн түгжрэлийн асуудлуудыг багасгадаг.
  4. Сүлжээ болон I/O үйлдлүүдийн үр ашиг
    Асинхрон программчлал нь удаан хугацаа шаарддаг сүлжээний эсвэл оролт/гаралтын үйлдлүүдийг үр ашигтай зохицуулна. Хүлээлтийн хугацаанд бусад ажлыг үргэлжлүүлэн гүйцэтгэдэг тул программын ерөнхий үр ашиг нэмэгддэг.
  5. Скалабилити эсвэл өргөтгөх чадвар
    Асинхрон программчлал нь сервер болон үйлчилгээг олон хэрэглэгчийн хүсэлтийг нэгэн зэрэг хүлээн авах чадвартай болгодог. Жишээлбэл, Node.js зэрэг платформууд нь энэхүү зарчим дээр үндэслэн бүтээсэн тул өндөр өргөтгөх чадвартай.
  6. Харилцан үйлчлэл сайжирна
    Асинхрон программчлал нь үйл явдлууд дээр суурилсан архитектуртай тул бусад системүүдтэй харилцахад уян хатан байдал нэмэгддэг.

Асинхрон программчлалд анхаарах зарим сул талууд байдаг:

  1. Нарийн төвөгтэй кодын урсгал  
    Асинхрон кодыг гүйцэтгэх нь дараалалгүй явагддаг тул дагаж мөрдөх нь илүү хэцүү байж болно. Код нь өөр өөр дуудлагуудын хооронд шилжих бөгөөд үүнийг дүрслэн харуулахад хэцүү байдаг.
  2. Дибаг хийхэд илүү хэцүү
    Үүний нэгэн адил асинхрон программын кодыг дибаг хийх нь төвөгтэй байж болно, учир нь гүйцэтгэл нь дараалсан биш юм. Алдаа нь нарийн бөгөөд үржихэд хэцүү байж болно.
  3. Increased callbacks
    Асинхрон кодтой бол үйл явдлын буцаан дуудлагыг зохицуулах хэрэгтэй. Олон тооны буцаан дуудлагатай байх нь кодыг тайлбарлахад хэцүү болгодог.


    Ерөнхийдөө асинхрон программчлал нь кодыг эмх цэгцтэй байлгахын тулд илүү их туршлага, сахилга бат шаарддаг. Нарийн төвөгтэй хяналтын урсгал нь анхааралтай бичихгүй бол эвдэрсэн код руу хөтөлж болно. Дибаг хийх, турших нь бас хэцүү болно.

Kotlin Coroutines ашиглан асинхрон программчлалын жишээг харуулж байна. Энд корутиныг ашиглан хоёр тусдаа ажлыг зэрэглүүлэн гүйцэтгэж байгаа бөгөөд тэдгээр нь 1 секунд хүлээлттэй үйлдлүүдийг агуулдаг.

import kotlin.system.*
import kotlinx.coroutines.*
fun main() {
       valtime = measureTimeMillis {
               runBlocking {
                       println(“Weather forecast”)
                       launch {
                              printForecast()
                        }
                       launch {
                              printTemperature()
                       }
               }
       }
       println(“Execution time: ${time / 1000.0} seconds”)
}
suspend fun printForecast() {
       delay(1000)
       println(“Sunny”)
}
suspend fun printTemperature() {
       delay(1000)
       println(“30\u00b0C”)
}

Гаралт:

Kotlin Coroutines дээр өмнөхтэй ижил функцийг агуулсан боловч асинхрон бус (синхрончлогдсон) байдлаар гүйцэтгэсэн. Өөрөөр хэлбэл, printForecast дуусахыг хүлээсний дараа printTemperature эхэлнэ.

import kotlin.system.*
import kotlinx.coroutines.*
fun main() {
       valtime = measureTimeMillis {
               runBlocking {
                       println(“Weather forecast”)
                       printForecast()
                       printTemperature()
               }
       }
       println(“Execution time: ${time / 1000.0} seconds”)
}
suspend fun printForecast() {
       delay(1000)
       println(“Sunny”)
}
suspend fun printTemperature() {
       delay(1000)
       println(“30\u00b0C”)
}

Гаралт:

Асинхрон программчлал нь программын хурд, үр ашиг, болон хэрэглэгчийн туршлагыг сайжруулдаг ч хэрэгжүүлэхэд илүү болгоомжтой, төлөвлөгөөтэй байхыг шаарддаг. Жижиг, хялбар программд синхрон арга хангалттай байж болох ч илүү хувьсгалтай, ачаалал ихтэй системд асинхрон шийдэл нь зайлшгүй сонголт болдог.

Leave a Reply