প্রথমটি একটি আরও ভাল বিকল্প।
সমান্তরাল.ফরআচ প্রতিটি অভ্যন্তরীণভাবে Partitioner<T>
আপনার সংগ্রহকে কাজের আইটেমগুলিতে বিতরণ করতে একটি ব্যবহার করে । এটি আইটেম প্রতি এক কাজ করবে না, বরং জড়িত ওভারহেড কম করার জন্য এটি ব্যাচ করবে।
দ্বিতীয় বিকল্পটি Task
আপনার সংগ্রহে আইটেম প্রতি একক সময় নির্ধারণ করবে । ফলাফলগুলি প্রায় (প্রায়) একই রকম হবে, এটি প্রয়োজনীয়তার চেয়ে অনেক বেশি ওভারহেড প্রবর্তন করবে, বিশেষত বৃহত সংগ্রহের জন্য এবং সামগ্রিক রানটাইমকে ধীর করে দেবে।
অবগতির জন্য - পার্টিশনকারী উপযুক্ত ব্যবহারের মাধ্যমে নিয়ন্ত্রণ করা যায় ব্যবহৃত Parallel.ForEach করার overloads , যদি তাই হয় পছন্দসই। বিশদর জন্য , এমএসডিএন-এ কাস্টম পার্টিশনস দেখুন ।
মূল পার্থক্য, রানটাইম এ, দ্বিতীয়টি অ্যাসিঙ্ক্রোনাস কাজ করবে। এটি সমান্তরাল ব্যবহার করে সদৃশ করা যেতে পারে For
Task.Factory.StartNew( () => Parallel.ForEach<Item>(items, item => DoSomething(item)));
এটি করার দ্বারা, আপনি এখনও পার্টিশনকারীদের সুবিধা গ্রহণ করুন, তবে অপারেশন সম্পূর্ণ না হওয়া পর্যন্ত অবরুদ্ধ করবেন না।