সমান্তরাল.ফোরএচ সম্পূর্ণ হওয়া পর্যন্ত আমি কীভাবে অপেক্ষা করতে পারি


122

আমি আমার বর্তমান প্রকল্পে টিপিএল ব্যবহার করছি এবং সমান্তরাল ব্যবহার করছি many টাস্ক ক্লাসে টাস্কটি শেষ না হওয়া পর্যন্ত অপেক্ষা করতে () অপেক্ষা করে। এর মতো, আমি কীভাবে সমান্তরালটির জন্য অপেক্ষা করতে পারি? প্রত্যেকটি সম্পূর্ণ হওয়ার জন্য এবং তারপরে পরবর্তী বিবৃতিগুলি কার্যকর করতে যেতে পারি?

উত্তর:


192

আপনাকে বিশেষ কিছু Parallel.Foreach()করতে হবে না, এর সমস্ত ব্রাঞ্চযুক্ত কাজ শেষ না হওয়া পর্যন্ত অপেক্ষা করবে। কলিং থ্রেড থেকে আপনি এটিকে একক সিঙ্ক্রোনাস স্টেটমেন্ট হিসাবে বিবেচনা করতে পারেন এবং উদাহরণস্বরূপ এটিকে চেষ্টা / ক্যাপের ভিতরে আবদ্ধ করুন।


10
"সমান্তরাল.ফোর্যাচ () এর সমস্ত শাখা-প্রশাখা সম্পন্ন না হওয়া পর্যন্ত অপেক্ষা করবে" এটি কিছু পরিস্থিতিতে বিভ্রান্ত হতে পারে, যেমন (অ্যাসিঙ্ক টাস্কটি অভ্যন্তরীণ): সমান্তরাল.ফরচে (গ্রুপযুক্তউদ্দীপনা, অ্যাসিঙ্ক unreadMsg संग्रह)>> {/ * কাজ * /});
বো এইচই

এখানে স্ট্যাকওভারফ্লোতে অন্যান্য সমস্যা রয়েছে: stackoverflow.com/questions/11564506/…
Bo HU

4
এই উত্তরটি অ্যাসিঙ্ক / অপেক্ষার আগে ২০১১ সালের। তবে আমি যেমন বলেছি, ফোরএচের ভিতরে থ্রেড তৈরি করা ভাল ধারণা নয়। উভয়ই একটি অ্যাসিঙ্ক অ্যাকশন নয়। আপনার পোস্ট করা লিঙ্কগুলি ভাল তথ্য এবং সমাধান সরবরাহ করে।
হেন্ক হলটারম্যান

1
"ফোরইচের ভিতরে থ্রেডগুলি প্রসারিত করা ভাল ধারণা নয়" আপনি কি প্রসারিত করতে পারবেন? এটি কি "যদি না আপনি নিশ্চিত হন যে আপনি ফিরে আসার আগে অপেক্ষা করছেন"?
জিয়ানথ্রা

16

প্যারালাল.ফোরিয়াচের সাথে আপনার এটির দরকার নেই: এটি কেবলমাত্র প্রসেসর হিসাবে পাওয়া যায় যতগুলি থ্রেডে ফোরচ পরিচালনা করে, তবে এটি সুসংগতভাবে ফিরে আসে।

আরও তথ্য এখানে পাওয়া যাবে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.