मुझे लगता है कि आपकी कंपनी को मल्टीथ्रेडिंग का उपयोग नहीं करना चाहिए।
बड़े पैमाने पर मल्टीथ्रेड प्रोजेक्ट करने के बाद, मैंने पाया कि दो तकनीकें चीजों को काम करने के लिए महत्वपूर्ण थीं। पहले , कोड को सही लिखा जाना था। हर क्षेत्र को मैन्युअल रूप से जाँचना पड़ता था ताकि यह सुनिश्चित हो सके कि इसे ठीक से और ठीक से सिंक्रनाइज़ किया गया हो। (चेतावनी: मैं अपने उत्तर को छोटा रखने के लिए यहां चीजों को थोड़ा सरल कर रहा हूं - या किसी भी दर पर, कम।) दूसरा , कोड को एकल और मल्टीकोर मशीनों पर फ्लैट रन करके परीक्षण किया जाना था - 100% का उपयोग करके कई मिनट प्रत्येक कोर की। (और अगर यह केवल प्रत्येक कोर के 2% का उपयोग करता है, जैसा कि यह अक्सर मेरे लिए करता है, तो यह एक बग भी है।)
आप इसे प्रबंधित करने में सक्षम हो सकते हैं, लेकिन आपका संगठन ऐसा नहीं कर सकता। यहां तक कि अगर वे समस्या को समझते हैं, जो वे नहीं करते हैं, तो उनके पास विशेषज्ञता नहीं है।
अधिकांश भाषाएं इससे बचने के तरीके प्रदान करती हैं। यदि आपके पास एक सॉकेट रीडर है, जिसमें आमतौर पर अपना स्वयं का धागा होता है, तो क्या यह मुख्य थ्रेड को जितनी जल्दी हो सके और बस संभव के रूप में जानकारी प्राप्त करता है। बेहतर अभी तक, सिस्टम कक्षाओं / कार्यों की तलाश करें जो आपके लिए रीडिंग के थ्रेड-पार्ट को संभालेंगे। एक पंक्ति का उपयोग करें जो एक के बाद एक "घटनाओं" को चलाता है, जैसे कि अधिकांश जीयूआई एपीआई करते हैं। (GUI API की ईवेंट कतार का स्वयं उपयोग करें, उस मामले के लिए।) यदि आपको समानांतर प्रसंस्करण की आवश्यकता है, तो आप संभवतः किसी प्रकार का "वर्कर थ्रेड" प्राप्त कर सकते हैं, जो आपको डेटा / फ़ील्ड्स को एक ही थ्रेड में रखने देगा, जो आपके लिए सभी ट्रांसफ़र संभाल सकता है।
मल्टीथ्रेडिंग के सभी खतरों पर जोर दें। (डरावनी कहानियाँ: मेरी पसंदीदा बग में कुछ पंक्तियाँ शामिल थीं: जैसे int i = 5; i = i * i;
, जिसका i
मूल्य 35 था। एक मैंने जो बहुत देखा था: if (thing != null) thing.reset();
एक शून्य सूचक अपवाद फेंकना।) मुझे लगता है कि आपकी एकमात्र आशा उन्हें समझ में आ रही है। एक पूरी, नई, अजीब दुनिया में कदम रखना, और शायद उन्हें एक बड़ा कदम वापस लेना चाहिए।
मुझे यकीन नहीं है कि मल्टीथ्रेडिंग को कैसे संभाला जाना चाहिए। यदि नौकरी एक व्यक्ति को दी जा सकती है, और सब कुछ वे असफल होने पर फेंक देते हैं, ठीक है। लेकिन एक टीम केवल अपने सबसे कमजोर सदस्य के रूप में मजबूत होने जा रही है, और यहां तक कि एक अच्छे प्रोग्रामर को पूर्ण विकसित बहुरंगी के साथ परेशानी होगी। मुझे उम्मीद है कि भाषा लोगों को इसे सुरक्षित बनाने का एक तरीका मिल जाएगा। मैंने वहाँ से कुछ उपयोगी सॉफ्टवेयर देखे हैं। लेकिन मुझे लगता है कि मल्टीथ्रेडिंग से बचना सबसे अच्छा है जब तक कि निष्पादन का समय महत्वपूर्ण न हो और एक अच्छा प्रोग्रामर या एक सिद्ध टीम उपलब्ध हो।