वर्तमान में मैं जिस C ++ इंजन पर काम कर रहा हूं, वह कई बड़े थ्रेड- जेनरेशन (मेरी प्रक्रियात्मक सामग्री बनाने के लिए), गेमप्ले (AI, स्क्रिप्ट, सिमुलेशन के लिए), भौतिकी और प्रतिपादन में विभाजित है।
धागे छोटे संदेश वस्तुओं के माध्यम से एक दूसरे के साथ संवाद करते हैं, जो धागे से धागे तक गुजरते हैं। कदम रखने से पहले, एक थ्रेड अपने आने वाले सभी संदेशों को संसाधित करता है- वस्तुओं को रूपांतरित करने, जोड़ने और हटाने आदि के लिए अपडेट। कभी-कभी एक थ्रेड (जनरेशन) कुछ (आर्ट) बनाएगा और इसे स्थायी स्वामित्व के लिए दूसरे थ्रेड (रेंडरिंग) में पास करेगा।
इस प्रक्रिया की शुरुआत में और मैंने कुछ चीजों पर ध्यान दिया है:
मैसेजिंग सिस्टम बोझिल है। एक नया संदेश प्रकार बनाने का अर्थ है आधार संदेश वर्ग को उप-वर्गित करना, अपने प्रकार के लिए एक नई पहेली बनाना और इस बात के लिए तर्क लिखना कि कैसे सूत्र नए प्रकार के संदेश की व्याख्या करें। यह विकास की गति है और टाइपो-शैली की त्रुटियों से ग्रस्त है। (सिडेनोट- इस पर काम करने से मुझे सराहना मिली कि महान गतिशील भाषाएं कैसे हो सकती हैं!)
क्या ऐसा करने के लिए इससे अच्छा तरीका है? क्या मुझे बढ़ावा देने के लिए कुछ का उपयोग करना चाहिए :: इसे स्वचालित बनाने के लिए बाध्य करें? मुझे चिंता है कि अगर मैं ऐसा करता हूं कि मैं कहने की क्षमता खो देता हूं, तो संदेश को प्रकार, या कुछ के आधार पर क्रमबद्ध करता हूं। निश्चित नहीं है कि अगर इस तरह का प्रबंधन आवश्यक हो जाएगा।
पहला बिंदु महत्वपूर्ण है क्योंकि ये धागे बहुत संवाद करते हैं। संदेश बनाना और पास करना चीजों को बनाने का एक बड़ा हिस्सा है। मैं उस प्रणाली को सुव्यवस्थित करना चाहता हूं, लेकिन अन्य प्रतिमानों के लिए भी खुला होना चाहिए जो सहायक हो सकते हैं। वहाँ विभिन्न multithreaded डिजाइन मैं इस आसान बनाने में मदद करने के बारे में सोचना चाहिए?
उदाहरण के लिए, कुछ संसाधन हैं जो अक्सर लिखे जाते हैं, लेकिन अक्सर कई थ्रेड्स से पढ़े जाते हैं। क्या मुझे म्यूटेक्स द्वारा संरक्षित साझा किए गए डेटा के विचार के लिए खुला होना चाहिए, जो सभी थ्रेड्स तक पहुंच सकते हैं?
यह मेरा पहली बार है जब जमीन के ऊपर से दिमाग में मल्टीथ्रेडिंग के साथ कुछ डिज़ाइन किया गया है। इस प्रारंभिक चरण में मुझे वास्तव में लगता है कि यह वास्तव में अच्छा चल रहा है (विचार कर) लेकिन मैं स्केलिंग के बारे में चिंतित हूं, और नए सामान को लागू करने में मेरी अपनी दक्षता।