یکی از قابلیت هایی که در نسخه 3.5 دات نت فریم ورک افزوده شد قابلیت LINQ بود که برای راحت تر و روان تر کردن کار با داده ها طراحی شده بود و کم و بیش همه با آن آشنا هستند.
یکی از قابلیت های کمتر شناخته شده دات نت فریم ورک PLINQ یا Parallel LINQ می باشد که با سادگی به ما کمک می کند، پردازش های ما به طور موازی و همزمان صورت بگیرد و سرعت و بهره وری کد مان افزایش پیدا کند. برای بهره گیری از PLINQ تغییر چندانی در کد لازم نیست بدهیم و راه ورود به قلمرو PLINQ و اجرای موازی پردازش ها تنها و تنها استفاده از متد AsParallel می باشد. صدا زدن متد AsParallel بر روی داده (IEnumerable) به طور خودکار زمینه اجرای LINQ را به PLINQ تغییر خواهد داد.
همیشه اجرای موازی موجب افزایش کارایی نخواهد شد و حتی می تواند نتیجه ای برعکس داشته باشد. موتور اجرای PLINQ می تواند تا حدودی شرایط را ارزیابی کند و در صورت نیاز کد را به صورت Sequential و غیر موازی اجرا کند.
همچنین موتور PLINQ به طور پیشفرض به تعداد هسته های پردازنده Thread ایجاد خواهد کرد و هر Thread را بر روی یک هسته اجرا خواهد کرد. شما می توانید با استفاده از متد WithDegreeOfParallelism مشخص کنید و دستور دهید که به جای تنظیمات پیشفرض چه تعداد Thread باید ایجاد شود.
1. آشنایی مقدماتی با PLINQ:
http://www.codeproject.com/Articles/156980/Parallelism-in-NET-PLINQ
2. آشنایی با حنبه های فنی تر PLINQ:
https://msdn.microsoft.com/en-us/library/dd997425(v=vs.110).aspx
3. مثال هایی عملی و مباحث پیشرفته تر در کتاب آنلاین Albahari:
http://www.albahari.com/threading/part5.aspx#_PLINQ