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