2013-12-11 9 views
10

One of the answers किस दौड़ की स्थिति को जानबूझकर दौड़ की स्थिति का उपयोग करके कम-स्तर वाले एल्गोरिदम का उल्लेख किया गया है। दौड़ की स्थिति कैसे फायदेमंद हो सकती है?दौड़ की स्थिति कैसे उपयोगी हो सकती है?

संपादित करें: समेकन और कतार जानबूझकर चीजों के आदेश की परवाह नहीं करते हैं, जब तक कुछ भी खो नहीं जाता है। "वास्तव में बालों वाले निम्न-स्तर वाले एल्गोरिदम इस उद्देश्य पर क्या करते हैं" पर कोई विचार?

+0

पूछने के समय, उल्लिखित उत्तर पर टिप्पणी करने के लिए पर्याप्त प्रतिष्ठा नहीं थी। अब टिप्पणी की शायद लेखक नोटिस करेंगे। –

+0

मुझे लगता है कि उनका मुद्दा यह नहीं है कि दौड़ की स्थिति उपयोगी है, बल्कि यह विनाशकारी नहीं है। –

+3

गुगलिंग "जानबूझकर दौड़ की स्थिति" कुछ लिंक देता है जो प्रासंगिक प्रतीत होते हैं। –

उत्तर

2

ऐसा एक मामला (कम से कम इसे दौड़ की स्थिति के रूप में माना जा सकता है, हालांकि यह शब्द यहां होने पर बहस हो सकता है), जब धागे कई तरीकों से कुछ समाधान खोजने के लिए प्रतिस्पर्धा कर रहे हैं, और पहले वहां पूरा एल्गोरिदम समाप्त हो सकता है। उदाहरण के लिए देखें - http://parasail-programming-language.blogspot.co.il/2010/06/intentional-race-condition-in-parasail.html

+1

मुझे नहीं लगता कि वाक्यांश "रेस हालत" इस पर लागू होता है। दो पथों से निष्कर्ष तक पहुंचने से कोई संघर्ष परिदृश्य नहीं होता है लेकिन एक शर्त या निर्णय परिदृश्य नहीं होता है। उस ने कहा, इस ब्लॉग को शुरू करने के लिए धन्यवाद। दिलचस्प पढ़ा। – Xephon

+0

@AlexV। परिदृश्य का विवरण ??? – Xephon

+0

@ एक्सफ़ोन, मैं सहमत हूं, लेकिन लेखक स्पष्ट रूप से ऐसा नहीं करता है कि यह चर्चा के लायक है। – Leeor

6

सभी दौड़ समान रूप से खराब नहीं हैं।

आप जिस भी प्रकार की दौड़ प्राप्त कर सकते हैं वह आंशिक परिणाम पढ़ रहा है। हर्ब सटर referred to यह है कि 'गुलाबी हाथियों को देखकर': आपका प्रोग्राम एक मध्यवर्ती राज्य का निरीक्षण करने में सक्षम है जो सभी आविष्कारों का उल्लंघन करता है।

यहां सामान्य उदाहरण समवर्ती गैर-परमाणु लिखने वाले हैं। यदि एक धागा एक चर से पढ़ता है जो समसामयिक रूप से किसी अन्य धागे द्वारा लिखा जाता है, तो पाठक पूर्ण कचरा प्राप्त कर सकता है। न केवल आप यह बता सकते हैं कि पाठक पुराने मान या नए मान को देखेगा, यह वास्तव में एक ऐसा मान देख सकता है जिसे किसी भी द्वारा कभी नहीं लिखा गया था। इस तरह के डेटा रेस को हर कीमत से बचा जाना चाहिए, क्योंकि किसी भी तरह से मनाए गए मूल्यों के कारण यह बहुत असंभव है। उदाहरण के लिए सी ++ आपको इस मामले में सीधे अपरिभाषित-व्यवहार-भूमि भेजता है।

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

इसी तरह के उदाहरण गैर वितरित वातावरण में होते हैं। लॉक-फ्री कतार पर विचार करें: आपको आमतौर पर सटीक क्रम की परवाह नहीं है जिसमें आइटम कतार में समाप्त होते हैं। कतार के पीछे की वस्तुओं का उपभोग करने के लिए सभी उत्पादकों की दौड़ 'और कतार के सामने की वस्तु का उपभोग करने के लिए सभी उपभोक्ताओं की दौड़'। हालांकि, जब तक आप गारंटी दे सकते हैं कि कोई भी आइटम गलती से गुम हो गया है या दूषित नहीं है, यह नियंत्रण स्तर कम हो गया है।

संबंधित मुद्दे