Amir Mokarchi
Amir Mokarchi
خواندن ۲ دقیقه·۴ سال پیش

تفاوت بین Task و Thread

پیرامون همین مطلب:

تفاوت بین Asynchronous و Multi-Threading

پیاده سازی Asynchronous به صورت Multi-Threaded

تفاوت بین Process و Thread چیست؟


کلاس Thread برای ایجاد و دستکاری کردن یک Thread در ویندوز استفاده می شود در حالی که یک Task نمایانگر برخی از عملیات های asynchronous و بخشی از Task Parallel Programming یا به اختصار TPL می باشد که که روشی برای نوشتن برنامه Multi-Threaded است. این قابلیت بوسیله یکسری از کلاس ها که در فضای نامSystem.Threading.Tasks قرار دارد فراهم شده و به ما این اجازه را می دهد که بدون درگیر شدن مستقیم با Thread ها و Thread Pool ها برنامه های Multi-Threaded بنوسیم. با این کار شیوه کار با Threadها بسیار ساده شده و یکسری از پیچیدگی ها در این بین حذف می شود.

یکی از قابلیت های TPL این است که کارهای محوله را به صورت خودکار بین CPU های سیستم (در صورت وجود) توزیع می کند که این کار در پشت زمینه بوسیله CLR Thread Pool انجام می شود. کارهای انجام شده توسط TPL در پشت زمینه عبارتند از تقسیم بندی وظایف، زمانبندی Thread ها، مدیریت وضعیت (State Management) و یکسری از کارهای اصطلاحاً Low-Level دیگر. نتیجه این کار برای شما بالا رفتن کارآیی برنامه ها بوده بدون اینکه درگیر پیچیدگی های کار با Thread ها شوید.

  • هیچ مکانیسمی مستقیم برای بازگشت نتیجه از Thread وجود ندارد اما Task می تواند نتیجه را برگرداند
  • در Task متوقف کردن عملیات با استفاده از Cancellation Tokens صورت می گیرد در حالی که در Thread این موضوع را پشتیبانی نمی کند
  • یک Task می تواند چندین Processes را همزمان انجام دهد. Thread ها فقط می توانند یک Task را همزمان انجام دهند
  • یک new Thread با Thread pool سر و کار ندارد ، در حالی که Task از Thread موجود در Thread pool استفاده می کند
  • ما می توانیم Task ها را با هم زنجیر کنیم تا یکی پس از دیگری اجرا شود
  • هنگامی که یک Task از یک Task دیگر شروع می شود ، رابطه parent/child برقرار می کند
  • استثناء Task / child می تواند بهTask / parent گسترش یابد


Threadtask
DotNet Developer
شاید از این پست‌ها خوشتان بیاید