tgoop.com/fullStackDevs/633
Last Update:
#multithread
#multitask
#thread
#task
#async
✳️ Multitasking vs Multithreading
🔻آیا تا به حال مدت ها منتظر کسی یا کاری بوده اید ، در حالی که هیچ کاری انجام نمی دهید و فکر می کنید که می توانستید کار دیگری انجام دهید؟ این زمانی است که اهمیت multithreading را درک می کنید. انتظار وقتی آسانتر می شود که بتوانید کارهای دیگری را انجام دهید در حالی که منتظر کسی یا چیز دیگری هستید. برای روشن تر شدن مفهوم چند وظیفه ای ، مادر خود را در نظر بگیرید. از زمان به دنیا آمدن ، من مادرم را دیده ام که همزمان چندین کار را انجام می دهد و همیشه تعجب می کنم که او چگونه این کار را انجام می دهد؟ او خانه را تمیز می کند ، لباس های می شوید و همزمان غذا را آماده می کند.
▪️در برنامه نویسی ، شما با وضعیت های بسیاری روبرو میشوید که مجبور می شوید از multithreading و multitasking استفاده کنید.
به عنوان مثال ، هنگام خواندن یک file بزرگ ، بهتر است به کاربر اجازه دهید کارهای دیگری انجام دهد. از این رو ، چه تفاوتی بین multithreading و multitasking وجود دارد؟ آیا آنها یکسان هستند؟
🔸Multitasking
به این معنی است که به کاربر اجازه می دهد چندین task را همزمان انجام دهد. کاربر می تواند ضمن نوشتن یک وبلاگ ، به موسیقی در حال اجرا در پس زمینه گوش دهد. بنابراین کامپیوتر چندین کار را برای کاربر انجام می دهد. هر task به منابع نیاز دارد. از آنجا که کامپیوتر از منابع محدودی برخوردار است ، تعداد کارهای انجام شده در همان زمان نیز محدود است.
🔹Multithreading
ترد ها مربوط به بالاترین سطح کد اجرا شده توسط یک پردازنده هستند ، بنابراین با بسیاری از تردها، سی پی یو شما می تواند همزمان چندین کار را انجام دهد. تمام CPU ها تردهای فعال دارند و هر فرایندی که در رایانه شما انجام می شود حداقل یک ترد واحد دارد.
ترد برای انجام task های متعدد استفاده می شود. هر task می تواند چندین thread داشته باشد. در یک برنامه multithreaded کاربر می تواند در مدت زمان کوتاتر نسبت به یک برنامه single thread کارهای بیشتری انجام دهد. امروزه تقریباً در هر برنامه
از multiple threading استفاده شده است. یک برنامه یا یک process می تواند یک user interface thread داشته باشد که در تعامل با کاربر باشد
و background worker threads که کارهای دیگری را انجام می دهند.
🔵 حال می بینیم که چگونه multithreading و multitasking در C # کار می کند.
▪️یک task چیزی است که شما می خواهید انجام شود. ترد یکی از موارد ممکن است که آن task را انجام میدهد.
▫️در دات نت Task یک عملیات واحد را نشان می دهد و معمولاً بصورت غیر همزمان (asynchronous) انجام می شود.
▪️تسک آبجکت Task Object ها یکی از کامپوننت های اصلی task-based asynchronous pattern است که برای اولین بار در .NET Framework 4 معرفی شده است.
▫️ کارهایی که توسط یک task انجام می شود به طور معمول بصورت غیر همزمان برروی
یک thread از threadpool اجرا می شود. تسک ها برای پردازنده های چند هسته ای تنظیم شده اند.
▪️تسک Task ها توسط task library تنظیم می شوند تا از thread های threadpool به روشی بسیار کارآمدتر از زمانی که خود از thread استفاده میکنید ،استفاده میکند.
ایجاد thread بسیار گران است ، Task ها صف خواهند شد و از thread ها استفاده مجدد میشود. بنابراین هنگامی که مثلا از یک thread در انتظار network I/O است ، در واقع می توان از آن برای اجرای یک کار دیگر استفاده کرد. شما فقط می توانید تعداد thread هایی را که با تعداد هسته پردازنده شما مطابقت دارد ، اجرا کنید (به طور همزمان)
همیشه سعی کنید از task استفاده کنید و اگر با مشکلی روبرو هستید که باعث می شود خودتان بخواهید thread را کنترل کنید (احتمالاً 1٪) سپس از thread ها استفاده کنید.
@fullStackDevs
BY Web Devs
Share with your friend now:
tgoop.com/fullStackDevs/633