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