एक परियोजना से आपने क्या सबक सीखा जो लगभग / वास्तव में खराब मल्टीथ्रेडिंग के कारण विफल रहा?
कभी-कभी, फ्रेमवर्क एक निश्चित थ्रेडिंग मॉडल को लागू करता है जो चीजों को सही होने के लिए अधिक परिमाण का एक आदेश बनाता है।
मेरे लिए, मुझे अभी तक अंतिम असफलता से उबरना है और मुझे लगता है कि मेरे लिए बेहतर है कि मैं उस ढांचे में मल्टीथ्रेडिंग के साथ काम न करूं।
मैंने पाया कि मैं मल्टीथ्रेडिंग समस्याओं में अच्छा था, जिनमें सरल कांटा / जुड़ाव है, और जहां डेटा केवल एक दिशा में यात्रा करता है (जबकि सिग्नल एक गोलाकार दिशा में यात्रा कर सकते हैं)।
मैं GUI को संभालने में असमर्थ हूं, जिसमें कुछ काम केवल एक कड़ाई से अनुक्रमित धागे ("मुख्य धागा") पर किया जा सकता है और अन्य काम केवल किसी भी धागे पर किया जा सकता है, लेकिन मुख्य धागा ("कार्यकर्ता सूत्र"), और जहां डेटा और संदेशों को एन घटकों (एक पूरी तरह से जुड़ा हुआ ग्राफ) के बीच सभी दिशाओं में यात्रा करनी होती है।
उस समय जब मैंने उस प्रोजेक्ट को दूसरे के लिए छोड़ दिया था, हर जगह गतिरोध के मुद्दे थे। मैंने सुना है कि 2-3 महीने बाद, कई अन्य डेवलपर्स ने गतिरोध के सभी मुद्दों को ठीक करने में कामयाब रहे, इस बिंदु पर कि इसे ग्राहकों को भेजा जा सकता है। मैं कभी भी यह पता लगाने में कामयाब नहीं हो पाया कि मेरे पास जो ज्ञान की कमी है।
परियोजना के बारे में कुछ: संदेश आईडी की संख्या (पूर्णांक मान जो किसी घटना के अर्थ का वर्णन करता है जिसे किसी अन्य वस्तु की संदेश कतार में भेजा जा सकता है, चाहे कोई भी सूत्र हो) कई हजारों में चलता है। अनोखे तार (उपयोगकर्ता संदेश) भी लगभग एक हजार में चलते हैं।
जोड़ा गया
मुझे किसी अन्य टीम से मिली सबसे अच्छी सादृश्य (मेरे अतीत या वर्तमान परियोजनाओं से असंबंधित) "डेटा को डेटाबेस में रखना" थी। ("डेटाबेस" केंद्रीकरण और परमाणु अद्यतनों का जिक्र करते हुए।) एक जीयूआई में, जो एक ही "मुख्य सूत्र" पर चलने वाले कई विचारों में खंडित है और सभी गैर-जीयूआई भारी-उठाने व्यक्तिगत कार्यकर्ता थ्रेड्स में किया जाता है, आवेदन का डेटा होना चाहिए एक एकल चरण में संग्रहीत किया जाता है जो एक डेटाबेस की तरह काम करता है, और "डेटाबेस" को गैर-तुच्छ डेटा निर्भरता वाले सभी "परमाणु अपडेट" को संभालने देता है। GUI के अन्य सभी हिस्से सिर्फ स्क्रीन ड्राइंग को संभालते हैं और कुछ नहीं। यूआई पार्ट्स सामान को कैश कर सकते हैं और अगर यह ठीक से डिज़ाइन किया गया है, तो उपयोगकर्ता इसे दूसरे के एक अंश से बासी नहीं होगा। इस "डेटाबेस" को "दस्तावेज़" के रूप में भी जाना जाता है दस्तावेज़ में देखें वास्तुकला। दुर्भाग्य से - नहीं, मेरा ऐप वास्तव में सभी डेटा को दृश्य में संग्रहीत करता है। मुझे नहीं पता कि ऐसा क्यों था।
साथी योगदानकर्ता:
(योगदानकर्ताओं को वास्तविक / व्यक्तिगत उदाहरणों का उपयोग करने की आवश्यकता नहीं है। उपाख्यानों के उदाहरणों से सबक, अगर यह अपने आप में विश्वसनीय हो, तो भी स्वागत है।)