کوروتین چیست؟ coroutine در اندروید
اگر وارد دنیای بزرگ برنامه نویسی اندروید شده باشید یا تحقیق کرده باشید، به احتمال زیاد باید با کوروتین مواجه شده باشید و پرسش کوروتین چیست ذهنتان را درگیر کرده باشد که احتمال می رود به همین دلیل هم هست که به این مقاله از نوری آکادمی مراجعه کردید، در این مقاله سعی شده به خوبی به مفهوم coroutine در اندروید بپردازیم، پس تا انتهای این مقاله همراه ما باشید.
کوروتین چیست؟
کوروتین یا از قول برخی افراد کروتین در اندروید درواقع یک الگوی برنامه نویسی است که با استفاده از آن شما این اجازه را دارید که با یادگیری آن و بکارگیری کد های آن، عملیات ها و وظایفی که تعیین میکنید را بطور غیرهمزمان یا بلعکس به ثمر برسانید؛ به این ترتیب اگر بخواهیم بطور مختصر و ساده بگوییم یعنی با کمک کوروتین در اندروید می توانید بجای انتظار کشیدن بخاطر یک عملیات سنگین، چندین عملیات را بطور همزمان و بدون معطلی انجام دهید، در ادامه ی این مقاله بهتر و کامل تر به این مفاهیم خواهیم پرداخت.
قبل از هرچیزی باید بگویم که قطعا این مدل برنامه نویسی که شامل کوروتین باشد در حوزه های دیگر برنامه نویسی هم وجود دارد، برای مثال برنامه نویسی ویندوز، اما به شکل متفاوت و کتابخانه ای متفاوت که خوب می دانیم مربوط به موضوع کوروتین چیست مقاله ما نخواهد شد.
اگر برنامه نویس اندروید و درحال توسعه یک اپلیکیشن باشید، احتمالا به این نیاز داشته باشید که چندین عملیات و کار را بصورت موازی یا حالات مختلف انجام دهید، بگذارید با مثال مبحث coroutine در اندروید را ادامه دهیم.
تصور کنید یک اپلیکیشن دارید که در یک بخشی از آن اپ، قرار است کاربر یک فایل پر حجم را دانلود کند که دست کم یک ساعت زمان میبرد، ایا از نظر شما اینکه کاربر از بخش های دیگر اپ استفاده ای نکند و یک ساعت منتظر این باشد که دانلود به اتمام برسد، اپلیکیشن شما یک اپلیکیشن کاربرپسند به حساب می آید؟
آیا شما با این اوصاف توانسته اید رضایت کاربرتان را جلب کنید؟
اگر نظر من را بخواهید، باید بگویم که اگر با این اپلیکیشن مواجه شوم بی شک یا از آن هیچ استفاده ای نخواهم کرد یا به سرعت آن را از موبایل خودم حذف خواهم کرد.
تا به اینجا باید کمی از اهمیت استفاده از کوروتین را متوجه شده باشید.
به عنوان یک برنامه نویس اندروید، خوب است و یا حتی ملزم هستید که بدانید همه ی کامپوننت های اپلیکیشن از یک ترد یا نخ برای اجرا شدن استفاده می کنند؛ گفتم ترد، پس بیاید قبل از اشنایی با کوروتین، معنا و مفهوم ترد را درک کنیم.
ترد thread چیست؟
از مهم ترین مفاهیمی که در یک سیستم عامل وجود دارد همین مفهوم ترد است، ترد یک مسیر اجرایی است و کاری که معین می شود (Process) را به نتیجه می رساند؛ ترد ها در CPU هستند که هر CPU بستگی دارد چند ترد باشد.
بطور کلی دو ترد داریم که یکی از آن ها Main Thread یا Ui Thread است که تنها یکی از آن میتوان داشت و تمامی تغییراتی که مربوط به Ui شود را همین ترد هندل می کند و دیگری که می توانیم ازآن چندتا داشته باشیم Background Thread یا Worked Thread است.
در نهایت می توان ترد ها را به کارگران مستقل در CPU تشبیه کرد که می توانیم بصورت موازی یا پشت سر هم برای آن ها وظایفی را تعیین کنیم تا آن ها رابه پایان برسانند.
تا به اینجای مقاله کوروتین چیست توضیحات کوتاهی در مورد کوروتین در اندروید دادیم و با مبحث ترد در اندروید هم آشنا شدیم، در ادامه دقیق تر به پاسخ این پرسش می پردازیم.
کوروتین چیست؟
اشتباه نکنید، کوروتین به معنی یا کاربرد ترد نیست! کوروتین تنها یک کتابخانه و یا ابزاری است برای مدیریت راحت ترد ها؛ انجام شدن عملیات ها با کمک کوروتین می تواند به چندین شکل صورت بگیرد که اگر بخواهم نام ببرم می توانم انواع Synchron و Asynchron را مثال بزنم که هرکدام از این ها هم خودشان از بخش هایی تشکیل می شوند که کاربرد های خاصی هم دارند.
اگر دوست دارید که بطور جامع و حرفه ای این مبحث و خیلی مباحث دیگر را بصورت پروژه محور آموزش ببینید حتما از دوره نخبگان معماری اندروید نوری آکادمی دیدن کنید که یکی از مباحثی که کامل با آن کار شده همین کوروتین است.
تا به اینجای مقاله coroutine در اندروید توانستیم درک کلی و جامعی در مورد کوروتین و ترد پیدا کنیم که قطعا نمی توان بطور دقیق و کامل همه ی آن را به شکل متنی توضیح داد که یادگیری آن به شکل متنی سخت است، اگر فکر میکنید که نیاز دارید از یک آموزش متنی هم استفاده کنید می توانید داکیومنت خود کاتلین (kotlin corotines) را که کامل آن را بصورت متنی توضیح داده را بخوانید.
اما در ادامه قصد داریم توضیحات کوتاهی در مورد جزئیات کوروتین داشته باشیم که حتما پیشنهاد می کنم در این بخش از مقاله کوروتین چیست هم با ما همراه باشید.
مقاله بعدی که پیشنهاد می کنیم حتما آن را بخوانید مقاله ای است که در آن به سوال null safety چیست پاسخ داده ایم.
یکی از مباحثی که در کوروتین داریم مبحث مالتی تردینگ Multi Threading هست که بهتر است آن را دست کم نگیرید و اطلاعات کافی در مورد آن داشته باشید؛ درواقع مالتی تردینگ مفهوم همان دانلود فایلی است که بالا برایتان توضیح داده بودم، اما بنظر شما چرا باید از مالتی تردینگ استفاده کنیم و آن را دست کم نگیریم؟
مزایای مالتی تردینگ:
- انجام سریع تر عملیات ها
- کاهش فشار وارد شده به سخت افزار
- و…
اما باید به این مورد توجه داشت که پیاده سازی مالی تردینگ بدون استفاده از کتابخانه و بصورت خام به شدت پیچیده و سخت خواهد بود که کتابخانه هایی که میتوان از آن ها استفاده کرد کوروتین و RxJava است که در حال حاضر به مبحث coroutine چیست می پردازیم.
کوروتین می تواند بصورت موازی و یا پشت هم اجرا شود یعنی چه؟
همانطور که می دانید کوروتین ها این قابلیت را دارند که بتوانند بصورت موازی یا پشت سر هم اجرا شوند، اما این ها به چه معنی هستند؟ با من در بخش پایانی مقاله کوروتین چیست همراه باشید.
- موازی
منظور از اینکه میتواند بصورت موازی اجرا شود یعنی عملیاتها در ترد های جداگانه تقسیم می شوند و هر کدام بدون اینکه به دیگری وابستگی داشته باشند به وظیفه خود عمل می کنند.
- پشت سر هم
در این مورد داستان متفاوت و بلعکس است، عملیات ها به عملیات های بعدشان وابستگی دارند، یعنی اگر 3 عملیات داشته باشیم، تا عملیات یک به پایان نرسد عملیات دو اجازه ی شروع نخواهد داشت.
در نهایت اگر قصد دارید از کوروتین استفاده کنید که خیلی هم کار خوبی می کنید، نیاز دارید تا آن را به گردل پروژه خودتان اضافه کنید، پس به سایت رسمی گوگل مراجعه کنید و dependency های کوروتین را اضافه کنید.
از این که تا به اینجای مقاله کوروتین چیست را دنبال کردید از شما سپاسگزارم، نظری داشتید در بخش پایین همین مقاله برامون کامنت کنید .