আমাদের একটি ফাংশন রয়েছে যার মধ্যে একটি একক থ্রেড কল করে (আমরা এটির মূল থ্রেডটির নাম রাখি)। ফাংশনের মূল অংশের মধ্যে আমরা সিপিইউ নিবিড় কাজ করার জন্য একাধিক কর্মী থ্রেড স্প্যান করি, সমস্ত থ্রেড শেষ হওয়ার জন্য অপেক্ষা করুন, তারপরে ফলাফলটি মূল থ্রেডে ফিরে আসুন।
ফলাফলটি হ'ল কলার নির্বিকারভাবে ফাংশনটি ব্যবহার করতে পারবেন এবং অভ্যন্তরীণভাবে এটি একাধিক কোর ব্যবহার করবে।
এখন পর্যন্ত সব ভাল ..
আমাদের যে সমস্যাটি রয়েছে তা ব্যতিক্রমগুলি নিয়ে কাজ করে। অ্যাপ্লিকেশন ক্রাশ করার জন্য আমরা শ্রমিক থ্রেডগুলিতে ব্যতিক্রম চাই না। আমরা চাই ফাংশনটিতে কলকারী তাদের মূল থ্রেডে ধরতে সক্ষম করুন। আমাদের অবশ্যই শ্রমিক থ্রেডগুলিতে ব্যতিক্রমগুলি ধরতে হবে এবং সেখান থেকে অযত্নে চালিয়ে যাওয়ার জন্য তাদের মূল থ্রেডে প্রচার করতে হবে।
এটা আমরা কিভাবে করতে পারি?
আমি সবচেয়ে ভাল চিন্তা করতে পারি:
- আমাদের কর্মী থ্রেডগুলিতে সম্পূর্ণ ব্যতিক্রমগুলি ধরুন (স্ট্যান্ডার্ড :: ব্যতিক্রম এবং আমাদের নিজস্ব কয়েকটি)।
- ব্যতিক্রমের ধরণ এবং বার্তাটি রেকর্ড করুন।
- মূল থ্রেডের সাথে সম্পর্কিত স্যুইচ স্টেটমেন্ট রয়েছে যা শ্রমিকের থ্রেডে যা কিছু রেকর্ড করা হয়েছিল তার ব্যাতিক্রমগুলিকে প্রত্যাখ্যান করে।
এটি কেবলমাত্র ব্যতিক্রম প্রকারের সীমিত সেটকে সমর্থন করার সুস্পষ্ট অসুবিধা রয়েছে এবং যখনই নতুন ব্যতিক্রম প্রকার যুক্ত করা হবে তখনই এটির সংশোধন প্রয়োজন।