مفهوم Multithreading و Multitasking در#C

multi-tasking به معنای انجام چند کار بصورت همزمان است . multi-threading برای انجام چندین کار مورد استفاده قرار میگیرد . ما در این مقاله multi-tasking و multi-threading را با ارائه ی مثال ، به طور کامل مورد بررسی قرار می دهیم .

 Multi_Tasking :
Multi_Tasking به کاربران این اجازه را میدهد که چند کار را بطور همزمان انجام دهند . کاربران میتوانند به موزیکی که در پس زمینه در حال اجراست گوش کنند ، درحالی که مشغول نوشتن مطالب وبلاگشان هستند .
بعد از آن ، کامپیوتر انجام دهنده چندین کار برای کاربر است . هر کار به یکسری منابع احتیاج داره (حافظه ، CPU ، RAM و …) . از زمانی که کامپیوترها منابع را محدود کردن ، تعداد کارهایی که بطور همزمان اجرا میشوند نیز محدود شدند.

Multi-threading :
Multi-threading برای انجام چندین کار مورد استفاده قرار میگیرد . هر کار میتواند دارای چندین thread باشد . در یک نرم افزار multi-theareded  ،کاربر توانایی بیشتری در انجام نسبت به یک نرم افزار singel-threaded دارد . امروزه ، اکثره نرم افزار ها از multi-threading استفاده میکنند . یک نرم افزار یا یک فرآیند میتواند یک thread رابط کاربری داشته باشد که فعل و انفعالات رخ داده توسط کاربر و thread های فرآیندهایی که در پس زمینه در حال اجرا هستند را مدیریت میکند .

انتظار کشیدن برای بارگذاری حجم عظیمی از اطلاعات از پایگاه داده را در نظربگیرید . این شبیه یک انتظار طولانی برای رسیدن پیتزا است وقتی که شما خیلی گرسنه اید . multi-tasking بیان دارد  که شما در این حین که منتظره رسیدن پیتزا هستید میتوانید بازی کامپیوتری کنید یا تلویزیون نگاه کنید . با این راه ، صبر کردن برای شما خیلی راحت تر میشود .

بعد از ارائه این توضیحات اجازه بدهید سراغ کد زدن بریم تا ببینیم multi-tasking و multi-threading در #C چگونه کار میکنند .

مثال ۱ :
مرحله اول : یک  پروژه جدید در visual studio بسازید

مرحله دوم : namespace های زیر را به برنامه اضافه کنید

using System.Threading;
using System.Threading.Tasks;

مرحله سوم : یک کلاس جدیدی با نام work بسازید . (نام کلاس دلخواه است و در دست برنامه نویس است )
مرحله چهارم : در کلاس work یک متد با نام count بسازید (نام متد نیز قابل تغییر دادن است )

کد های زیر را بنویسید :

1-Multithreading and Multitasking in c sharp

مرحله پنجم : کدهای زیر را در قسمت Main بنویسید : 

2-Multithreading and Multitasking in c sharp

  عبارت Thread thread1 = new Thread(s) یک thread جدید را میسازد .
با عبارت thread.Start() ، thread ما شروع خواهد شد .

مرحله ششم : برنامه را اجرا کنید ، نتیجه در زیر نشان داده شده است :

3-Multithreading and Multitasking in c sharp

نتایج حاصله نشان می دهد main thread بعد از thread1 به پایان رسیده است . main thread برای تکمیل و اتمام شمارش thread1 منتظر نمانده است . هر دو thread کار را بضورت مستقل انجام میدهند . این کار میتواند انجام شود در حالی که یک فایل حجیم در حال بارگذاری است .

مرحله هفتم : اجازه دهید یک thread دیگر بسازیم .
یک متد جدید با نام “Alphabet” در کلاس Work بسازید و کد های زیر را در آن وارد کنید :

4-Multithreading and Multitasking in c sharp

 مرحله هشتم : یک thread جدید در متد Main بسازید .
کدهای شما باید شبیه زیر باشد :

5-Multithreading and Multitasking in c sharp

 مرحله نهم : برنامه را اجرا کنید :

6-Multithreading and Multitasking in c sharp

 نتیجه بدست آمده نشان میدهد که cpu چطور به هر thread برای اجرا زمان میدهد . زمانی که thread1 شروع میشود ، آن تا ۰ شمارش کرده ، cpu عوض می شود و در اختیار thread2 قرار میگیرد و اجرای آن شروع می شود . بعد از اجرای thread2  ، دوباره cpu در اختیارthread1 قرار میگیرد . cpu برای هر thread زمان محدودی را در نظر میگیرد .

خروجی در هر بار اجرا باید متفاوت باشد . اگر شما قصد اتمام تمام thread ها در یک زمان رو دارید ، شما میتوانید یرای رسیدن به این هدف از Join() استفاده کنید .

حالا، اجازه بدین یه مثال برای multi-tasking در C# بزنیم .

مثال ۲ :
مرحله اول : یک پروژه  console Aplication  در visual studio بسازید .
مرحله دوم : یک کلاس جدید با یک نام دلخواه بسازید .
مرحله سوم : یک متد جدید در کلاس بسازید ، که یک کپی از یک فایل دریافتی میسازد .

کلاس مذکور همانند زیر میباشد :

7-Multithreading and Multitasking in c sharp

 شما میتوانید ادرس فایلی را که قصد کپی کردن آن را دارید تغییر دهید . همچنین میتوانید ادرس مقصد را نیز تغییر دهید .
مرحله چهارم : یک task جدید در متد Main  بسازید .

کد شما باید شبیه زیر باشد :

8-Multithreading and Multitasking in c sharp

 مرحله پنجم : برنامه را اجرا کنید :

9-Multithreading and Multitasking in c sharp

 نتایج نشان میدهد که main thread قبل از اینکه فایل کپی کردن را کپی کند  ، به اتمام رسیده است . این بدان معنی است که هنگامی که فایل در حال کپی شدن است ، شما در main thread  میتوانید کارهای دیگری را نیز انجام دهید .

دانلود فایل آموزش

پسورد : csharpoop.com

مفهوم Multithreading و Multitasking در#C
امتیاز دهید

(434 نوشته)

C# Programmer , Web Design And Developer , MVC , ASP.NET

فکر شما چیست؟

آدرس ایمیل شما منتشر نخواهد شد. بخشهای موردنیاز علامتگذاری شدهاند *

حاصل جمع اعداد را وارد کنید : *