آغازه آموزش برنامه نویسی آموزش سی شارپ دانلود کتاب برنامه نویسی موازی در سی شارپ Parallel Programming به زبان فارسی

دانلود کتاب برنامه نویسی موازی در سی شارپ Parallel Programming به زبان فارسی

دانلود کتاب برنامه نویسی موازی در سی شارپ Parallel Programming به زبان فارسی . پردازنده هايي (CPU) که امروزه در سرور ها و رايانه هاي شخصي مورد استفاده قرار مي گيرند، کاملا متفاوت با پردازنده هاي قديمي مي باشد.  پردازنده هاي جديد اغلب چند هسته اي بوده و قابليت پردازش اطلاعات را به طور همزمان، موازي و توسط هسته هاي مختلف را دارند. پردازنده هايي (CPU) که امروزه در سرور ها و رايانه هاي شخصي مورد استفاده قرار مي گيرند، کاملا متفاوت با پردازنده هاي قديمي مي باشد.  پردازنده هاي جديد اغلب چند هسته اي بوده و قابليت پردازش اطلاعات را به طور همزمان، موازي و توسط هسته هاي مختلف را دارندتاکنون اگر توسعه گران قصد داشتند اجراي برنامه را با استفاده از هسته هاي مختلف پردازنده انجام دهند، بايد خود را درگير کدهاي سطح پايين و بسيار پيچيده اي مي نمودند. اما خوشبختانه با معرفي کتابخانه Task Parallel Library در DotNet Framework 4.0 اين عمل به ساده ترين شکل ممکن امکان پذير شده است . کتاب برنامه نویسی موازی در سی شارپ میتواند شما را در این زمینه راهنمایی کند.

عنوان کتاب: کتاب برنامه نویسی موازی در سی شارپ Parallel Programming به زبان فارسی

نویسنده: مهندس کناری ناشر: ام اس پی سافت

زبان کتاب: فارسی

تعداد صفحه: ۱۰۹

حجم فایل: ۱۳٫۹ مگابایت

کتاب برنامه نویسی موازی در سی شارپ Parallel Programming

کتاب برنامه نویسی موازی در سی شارپ Parallel Programming

کتابخانه ي Task Parallel Library يا به عبارت خلاصه تري TPL به طور کلي در سه حوزه ي زير مورد استفاده قرار مي گيرد

  1. Data Parallelism
  2. Parallel LINQ
  3. Task Parallelism

قبل از اينکه به ادامه مقاله بپردازيم، توجه داشته باشيد که براي استفاده از امکانات کتابخانه TPL بايد فضاي نامي زير را به برنامه اضافه نماييد.

using System.Threading.Tasks;

Data Parallelism:

يکي از نياز هاي بسيار معمول براي برنامه نويسي موازي، پردازش سنگين اطلاعات مي باشد. فرض کنيد برنامه ي شما حاوي يک حلقه ي For يا ForEeach با تعداد تکرار هاي بسيار زياد مي باشد و در درون اين حلقه نيز يک عمل زمانبر انجام مي شود. اين مسئله مي تواند باعث هنگ نمودن برنامه و يا کاهش راندمان و کارايي برنامه گردد. تا زماني که تمام تکرار هاي اين حلقه به پايان نرسيده است اين مشکل ادامه خواهد داشت. پس اگر بتوان اين پردازش را با استفاده از هسته هاي مختلف پردازنده و به طور همزمان انجام داد، زمان پردازش به طور قابل توجهي کاهش مي يابد و اين امر باعث بهبود کارايي نرم افزار خواهد شد.

براي درک بهتر به مثال زير توجه کنيد.

Debug.WriteLine(“Processor threads states:”);
for (int i = 0; i < 10; i++)
{
Debug.WriteLine(Thread.CurrentThread.ThreadState);
}

خروجي حلقه ي بالا به شکل زير مي باشد.

Processor threads states

Running

Running

Running

Running

Running

Running

Running

Running

Running

Running

نکته ي مهمي که تصوير بالا بيان مي کند، اين است که پردازش حلقه فقط توسط تريد (Thread) جاري برنامه انجام مي شود و در نتيجه تا زماني که تمامي تکرار هاي حلقه انجام نشده باشد، اين تريد مشغول مي باشد.

اکنون اين حلقه را با استفاده از کتابخانه TPL خواهيم نوشت.

Debug.WriteLine(“Processor threads states:”);

Parallel.For(0, 10, delegate(int i)
{
Debug.WriteLine(Thread.CurrentThread.ThreadState);

});

همانطور که ملاحظه مي نماييد کلاس Parallelداراي متدي به نام For مي باشد که امکان پردازش دستورات داخل حلقه به طور موازي بر روي هسته هاي مختلف پردازنده را فراهم مي آورد. پارامتر اول حلقه، ايندکس شروع حلقه و پارامتر دوم ايندکس پايان حلقه و پارامتر سوم يک Action Delegate مي باشد که ما در قطعه کد بالا آن را به شکل inline نوشته ايم.

در صورتي که تمايل نداشته باشيم که اين Action Delegate را به شکل inline بنويسيم، مي توانيم  از نام يک تابع ابه شکل زير استفاده کنيم. (عملکرد آن کاملا مشابه مي باشد)

Debug.WriteLine(“Processor threads states:”);
Parallel.For(0, 10, TestMethod);

voidTestMethod(int i)
{
Debug.WriteLine(Thread.CurrentThread.ThreadState);
}

اگر علاقه مند به عبارات لمبدا مي باشيد، اين حلقه را به شکل بسيار ساده اي مانند قطعه کد زير نيز مي توان نوشت.

Debug.WriteLine(“Processor threads states:”);

Parallel.For(0, 10, i => Debug.WriteLine(Thread.CurrentThread.ThreadState));

اما به خروجي اين حلقه توجه نماييد.

Processor threads states:

Running

Background

Background

Running

Background

Background

Background

Background

Running

Background

از شکل بالا به سادگي متوجه مي شويد که پردازش اين حلقه توسط تريد جاري برنامه (Running) و تريد هاي پس زمينه (Background) انجام شده است. در نتيجه ما بدون اينکه خود را درگير مديريت تريدهاي مختلف کنيم، توانسته ايم برنامه را بر روي هسته هاي مختلف پردازنده به شکل موازي مورد پردازش قرار دهيم و اين سهولت را مديون کتابخانه ي TPL مي باشيم.

نکته بسيار مهم:

توجه داشته باشيد که اجراي اين حلقه توسط تريد هاي مختلف، نکته ي ديگري را نيز به ما نمايان مي کند و بيانگر آن است که در صورتي که داخل حلقه، دسترسي به منابع (Resources)خاصي پيدا مي کنيم، حتما بايد مديريت دسترسي همزمان (Concurrent) را مد نظر داشته باشيم. ضمنا مسئله ي Thread-Safe نبودن کنترل هاي ويندوزي را هم در نظر داشته باشيد.

کلاس Parallelداراي متدي به نام ForEachنيز مي باشد که مانند حلقه ForEach معمولي عمل مي کند و البته اين پردازش نيز به صورت موازي انجام شده و مطالب گفته شده در مورد Parallel.For در مورد اين متد نيز صادق مي باشد.

به مثال زير توجه فرماييد.

var customers = newList<Customer>();

Parallel.ForEach(customers, delegate(Customer c)
{
Debug.WriteLine(c.FirstName);
}

Parallel LINQ:

Parallel LINQ که به شکل اختصار بدان PLINQ نيز گفته مي شود، جهت اجراي کوئري هاي زبان LINQ بر روي هسته هاي مختلف پردازنده و به شکل موازي استفاده مي شود.

قطعه کد زير مثال ساده اي از يک کوئري با استفاده از LINQ مي باشد.

var result = from m in customers
where m.FirstName.StartsWith(“mor”)
select m;

با استفاده از متد AsParallelمي توانيم دستور کوئري بالا را بر روي هسته هاي مختلف پردازنده و به شکل موازي انجام دهيم.

var result = from m in customers.AsParallel()
where m.FirstName.StartsWith(“mor”)
select m;

توجه:

دقت داشته باشيد که PLINQ راه حلي براي بالا بردن راندمان دستورات LINQ to SQL و LINQ to Entity نمي باشد.

Task Parallelism:

اين ويژگي کتابخانه ي TPL امکان ايجاد وظايف (Tasks)، اجرا و مديريت آن ها را فراهم مي آورد. اجراي وظايف به شکل کاملا آسنکرون انجام مي شود.

به مثال زير دقت نماييد.

Task.Factory.StartNew(() =>
{
for (int i = 0; i < 10; i++)
{
Debug.WriteLine(Thread.CurrentThread.ThreadState);
}
}

خروجي قطعه کد بالا به شکل زير مي باشد.

Processor threads states:

Background

Background

Background

Background

Background

Background

Background

Background

Background

Background

با استفاده از Task Parallelism مي توان وظيفه ها را يکي پس از  کامل شده ديگري و يا به طور همزمان انجام داد.

تذکر بسيار مهم:

کتابخانه ي Task Parallel Library جهت استفاده از امکان اجرا نمودن کدها به شکل موازي به وجود آمده است ولي نبايد تصور کنيد که اين کتابخانه باعث بالا بردن راندمان برنامه در تمامي حالات مي شود. تنها زماني از TPL استفاده کنيد که عمل پردازش اطلاعات به شکل قابل توجهي زمانبر مي باشد. در غير اين صورت استفاده از TPL تاثيري در راندمان برنامه نداشته و حتي کمي تاثير منفي نيز مي گذارد.

در ضمن مي توان از کتابخانه TPL جهت اجراي کدها به شکل غير همزمان و آسنکرون استفاده نمود. اين عمل بدون درگير شدن با تريدهاي مختلف و مقوله ي پيچيده Multi-Thread Programming انجام مي شود

قابل توجه کاربران شما می توانید این  کتاب را یکجا و بطور کامل از لینک زیر دریافت کنید.

لینک مستقیم

برای دریافت فایل اینجا کلیک کنید. (سرور دوم )

 آموزش c#, آموزش برنامه نویسی, آموزش سی شارپ, برنامه نویسی c#, برنامه نویسی موازی در سی شارپ, برنامه نویسی موازی در سی شارپ Parallel Programming, دانلودکتاب فارسی برنامه نویسی موازی در سی شارپ Parallel Programming, کتاب فارسی برنامه نویسی موازی در سی شارپ Parallel Programming Csharp،برنامه نویسی موازی،برنامه نویسی موازی در C#،برنامه نویسی موازی در سی شارپ،برنامه نویسی موازی چیست،مقاله فارسی برنامه نویسی موازی،کار با برنامه نویسی موازی،کتاب فارسی برنامه نویسی موازی در سی شارپ

دانلود و توضیحات ...

  • نویسنده : حسن کریمی
  • منبع : آغازه
رمز فایل هاwww.aghazeh.com

بدون دیدگاه

دیدگاه شما

نظر شما