در ادامه ی جستجو درباره ی متد IVssBackupComponents.BeginBackupComplet ، به کلاس Task<TResult> برخوردم و در ادامه (هم که حالا شاید به این موضوع ربطی نداشته باشه) ، به کلاس Parallel .
کلاس Parallel را چند روز پیش ، در کدی که میخواستم برای جستجوی فایل ها استفاده کنم و در جریان پست های بالاترکه لینک داده بودم (برای سریعترین شیوه ی جستجوی فایل) :
Fastest way searching specific files
از متد Parallel.ForEach (که از دلیگیت Action<T> برای ورودی اش استفاده میکنه) برای اینکه بصورت موازی برنامه نویسی کنه ، استفاده کرد که منم توی کدم ازش استفاده کردم .
اگه اشتباه نکنم ، شما قبلا گفتین برنامه نویسی موازی ، بصورتی هست که از چند هسته بصورت همزمان بشه استفاده کرد. درسته دیگه؟ الان اون مطالب ، برابر استفاده از کلاس Parallel هست؟ یعنی وقتی از این کلاس و اعضاش (مثل همین متد Parallel.ForEach) استفاده میکنیم ، هر حلقه داخل یه نخ یا حتی داخل هر هسته اجرا میشه؟ بعد اینکه اما من کدم را تست کردم (و در پایین کد را میدم) ، برای من که بازم توی تسک منیجر یه هسته را بیشتر نتونست درگیر کنه و فرق خاصی با foreach معمولی نداشت (پردازنده ام i5 4460 هه و چهار هسته ای و بیشتر از 25 درصد برای اون پروسه را نتونست درگیر کنه) .
بعد این کلاس متد Parallel ، کاربرد ابتدایی از برنامه نویسی موازی و استفاده ی همزمان در چند هسته هست؟ آخه قبلا گفته بودین برنامه نویسی موازی ، سخت هه و یادگیریش خیلی طول میکشه.
این هم کد من (که در درایوها ، فایل ها و فولدرها را جستجو میکنه اما همونطور که گفتم ، در foreach معمولی و Parallel.ForEach ، فرق خاصی نداشتش) :