پرش به محتوا
مارکت محصولات دیجیتال و خدمات توسعه
MILMIT JOURNAL

Coroutines چیست ؟

Coroutines چیست ؟

یکی سری از آموزش برنامه نویسی اندروید به آموزش Coroutines در اندروید می پردازیم coroutines همراه با کاتلین به اندروید اضافه گردید با ما همراه باشید تا بیشتر با این کد آشنا شوید.

Coroutines = Co + Routines

در اینجا co به معنی cooperation و routines به معنی function است. این به معنی است که توابع با یکدیگر به صورت مرتبط کار می کنند.

خب بریم سراغ مثال در پایین یک مثال ساده با دو فانکشن نوشته شده است

functionA

fun functionA(case: Int) {
    when (case) {
        1 -> {
            taskA1()
            functionB(1)
        }
        2 -> {
            taskA2()
            functionB(2)
        }
        3 -> {
            taskA3()
            functionB(3)
        }
        4 -> {
            taskA4()
            functionB(4)
        }
    }
}

functionB

fun functionB(case: Int) {
    when (case) {
        1 -> {
            taskB1()
            functionA(2)
        }
        2 -> {
            taskB2()
            functionA(3)
        }
        3 -> {
            taskB3()
            functionA(4)
        }
        4 -> {
            taskB4()
        }
    }
}

در اینجا زمانی که functionA مقدار یک را در ورودی بگیرد functionB اجرا خواهد شد و در زمانی که کار functionB به اتمام برسد کار در FunctionA اجرا خواهد شد به این کار cooperation گفته می شود با استفاده از Coroutines می توان به راحتی بدون استفاده از when و case می توانید پیاده سازی کنید.

دو نوع Coroutines وجود دارد که عبارتند از :

  • Stackless
  • Stackful

kotlin از stackless coroutines استفاده می کند به این معنی که coroutines استک خودشان را ندارند پس fucntion ها بروی ترد های native به صورت map کار نمی کنند. (به زبان ساده در ترد رزور شده کار می کنند.)

در سایت کاتلین Coroutines به این شکل توضیح داده شده است.

در وهله اول coroutine یک ترد سبک است. مثل ترد کار می کند coroutines ها می توانند به صورت paraellel اجرا شوند همینطور می توانند wait داشته باشند و با یک دیگر کار کنند.بزرگترین تفاوت بین coroutine و ترد free و cheap بودن آنهاست شما می توانید هزاران coroutine ایجاد کنید ولی در performance مشکلی نخواهید دید ولی اگر همین کار را ترد انجام دهید قطعا با مشکل memory leak مواجه خواهید شد.

coroutine جایگزینی برای ترد نیستند ولی بیشتر شبیه به framework برای مدیریت ترد اند.

suspend fun fetchAndShowUser() {
     val user = fetchUser() // fetch on IO thread
     showUser(user) // back on UI thread
}

 

CONTINUE READING

مطالب مرتبط

مشاهده همه مقالات
3 دقیقه مطالعه

بهترین افزونه های SMTP وردپرس

افزونه‌های SMTP وردپرس ابزارهای قدرتمندی هستند که به بهبود ارسال ایمیل‌ها از وب‌سایت‌های وردپرسی کمک می‌کنند. این افزونه‌ها با استفاده از پروتکل SMTP (Simple…

MilMit
4 دقیقه مطالعه

بهترین افزونه‌های سئو وردپرس در سال ۲۰۲۵

وردپرس محبوب‌ترین سیستم مدیریت محتوا در جهان است و بهینه‌سازی سایت‌های وردپرسی برای موتورهای جستجو یکی از مهم‌ترین راهکارهای افزایش بازدید و جذب کاربران…

MilMit

دیدگاهتان را بنویسید