loading...
وبلاگ اموزشی استاد رحمانی

سجادروستائی فارسی بازدید : 66 دوشنبه 22 آبان 1391 نظرات (1)

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

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

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

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

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

تعداد صفحه: 109

حجم فایل: 13.9 مگابایت

 

 

کتابخانه ي 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 انجام مي شود

 

 

توجه : اگر در دانلود لینکها با Eset Smart Security شرکت NOD32 مشکل دارید. لطفا اینجا را بخوانید

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

لینک مستقیم

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

 

پسورد فایل:www.aghazeh.com

 

 

لینک کمکی:

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

 

پسورد فایل:www.aghazeh.com

 

توجه: اگر در دانلود لینکها با Eset Smart Security شرکت NOD32 مشکل دارید. لطفا اینجا را بخوانید

 

برای باز کردن فایلها نیاز به برنامه WinRAR و برای خواندن کتابها نیاز به Adobe Acrobat Reader دارید.

کلمه رمز جهت بازگشایی فایل فشرده عبارتwww.aghazeh.com می باشد. تمامی حروف را میبایستی به صورت کوچک تایپ کنید و در هنگام تایپ به وضعیت EN/FA کیبورد خود توجه داشته باشید همچنین بهتر است کلمه رمز را تایپ کنید و از Copy/Paste آن بپرهیزید.

ارسال نظر برای این مطلب
این نظر توسط هر روز آخرین خبر استخدامی را برات اس ام اس میفرستیم در تاریخ 1393/10/09 و 4:10 دقیقه ارسال شده است

سلام وقت بخیر

اگه تمایل داری هر روز آخرین اخبار استخدامی شرکت ، سازمان های دولتی را دریافت کنی

می تونی به لینک زیر جهت فعال سازی بری

http://sms.mida-co.ir/newsletter/6/estekhtam

این نظر توسط دریافت پنل رایگان به همراه خط اختصاصی با پیش شماره 50005 در تاریخ 1393/09/07 و 2:15 دقیقه ارسال شده است

باسلام خدمت شما مدیر عزیز

جهت ثبت نام پنل اس ام اس رایگان با همراه خط اختصاصی با پیش شماره 50005 می توانید به آدرس

http://50005.mida-co.ir

مراجعه نمائید.

منتظر حضور گرمتون هستیم

mida-co.ir

این نظر توسط پیشنهاد یک کسب کار هوشمندانه در تاریخ 1393/08/26 و 1:25 دقیقه ارسال شده است

با سلام خدمت شما

این پیام احتمالا آینده ی تجاری شما را متحول خواهد کرد

شما می توانید با حداقل سرمایه ی اولیه ،

صاحب جامع ترین مرکز فروشگاهی و خدماتی شهرتان شوید

جهت کسب اطلاعات بیشتر به وبسایت WWW.IBP24.ORG مراجعه نمایید

این نظر توسط سامانه پیامک در تاریخ 1393/07/02 و 1:36 دقیقه ارسال شده است

با سلام خدمت شما مدیر محترم
شما می توانید با عضویت در طرح همکاری فروش پنل و خطوط پیامکی از بازدید کننده وبلاک خود درآمد کسب کنید
ابتدا وارد آدرس زیر شوید و مراحل ثبت نام رو کامل نمائید
http://sms.mida-co.ir/hamkar
سپس وارد پنل کاربری شوید و از قسمت شبکه فروش و بازاریابی کد های مربوط به فروش پنل را در سایت خود قراردهید بعد از معرفی هر کاربر به شما 25 درصد سود فروش داده می شود
جهت کسب اطلاعات بیشتر به سایت زیر مراجعه نمائید
mida-co.ir
info@mida-co.ir

این نظر توسط سامانه پیامک در تاریخ 1393/04/20 و 3:57 دقیقه ارسال شده است

با سلام خدمت شما مدیر محترم

برای داشتن یک سامانه حرفه ای و رایگان همین حالا اقدام نمائید. سامانه sms5002.ir به شما یک پنل پیامک کاملا اختصاصی رایگان می دهد با این سامانه پنل ارتباطی جدیدی بین سایت و کاربران خود آغاز کنید. برای فعال سازی همین حالا اقدام نمائید.

جهت ثبت نام به آدرس زیر مراجعه نمائید

sms5002.ir/register.php


کد امنیتی رفرش
اطلاعات کاربری
  • فراموشی رمز عبور؟
  • آرشیو
    آمار سایت
  • کل مطالب : 3
  • کل نظرات : 1
  • افراد آنلاین : 1
  • تعداد اعضا : 5
  • آی پی امروز : 8
  • آی پی دیروز : 1
  • بازدید امروز : 1
  • باردید دیروز : 0
  • گوگل امروز : 0
  • گوگل دیروز : 0
  • بازدید هفته : 1
  • بازدید ماه : 1
  • بازدید سال : 5
  • بازدید کلی : 1,802