यह साबित करना कि एक प्रोग्राम "थ्रेड सेफ" कठिन है। हालांकि, यह संभव है कि "डेटा रेस" शब्द को संक्षिप्त और औपचारिक रूप से परिभाषित किया जाए। और यह निर्धारित करना संभव है कि किसी प्रोग्राम के विशिष्ट रन का निष्पादन ट्रेस करता है या ट्रेस के आकार के आनुपातिक समय में डेटा रेस नहीं करता है। इस प्रकार का विश्लेषण कम से कम 1988 तक वापस चला जाता है: बार्टन पी। मिलर, जोंग-देओक चोई, "ए मेकेनिज्म फॉर एफिशिएंट डिबगिंग ऑफ पैरेलल प्रोग्राम्स", कॉन्फ। प्रोग पर। लैंग। Dsgn। और Impl। (PLDI-1988): 135-144 ।
किसी निष्पादन के निशान को देखते हुए हम पहली बार ट्रेस में होने वाली घटनाओं के बीच आंशिक-क्रम से पहले परिभाषित करते हैं। दो घटनाओं को देखते हुए और जो एक ही धागे पर होते हैं तो या । (एक ही थ्रेड पर ईवेंट्स प्रोग्रामिंग भाषा के अनुक्रमिक शब्दार्थों द्वारा दिए गए कुल आदेश का निर्माण करते हैं।) सिंक्रोनाइज़ेशन इवेंट्स (ये म्यूटेक्स प्राप्त कर सकते हैं और जारी कर सकते हैं, उदाहरण के लिए), आंशिक ऑर्डर होने से पहले एक अतिरिक्त इंटर-थ्रेड होता है। (यदि थ्रेड एक म्यूटेक्स जारी करता है और फिर थ्रेड उस म्यूटेक्स का अधिग्रहण करता है तो हम कहते हैं कि रिलीज होता है-अधिग्रहण से पहले।)एखa < bb < aएसटी
फिर दो दिए गए डेटा पहुंच (चर रहे हैं करने के लिए पढ़ता है या राईट नहीं तुल्यकालन चर) और है कि एक ही स्मृति स्थान पर हैं, लेकिन अलग धागे से और जहां या तो या एक लिखने आपरेशन हम कहते हैं एक डेटा- है कि वहाँ है और बीच की दौड़ यदि न तो और न ही ।एखएखएखa < bb < a
सी ++ 11 मानक एक अच्छा उदाहरण है। (संबंधित अनुभाग 1.10 ड्राफ्ट स्पेक्स में ऑनलाइन उपलब्ध हैं।) C ++ 11 सिंक्रोनाइज़ेशन ऑब्जेक्ट्स (म्यूटेक्स और एक atomic<>
प्रकार के साथ घोषित चर ) और अन्य सभी डेटा के बीच अंतर करता है। C ++ 11 युक्ति कहती है कि प्रोग्रामर एक मल्टीथ्रेड प्रोग्राम के ट्रेस पर डेटा एक्सेस के बारे में कारण बना सकता है जैसे कि यह क्रमिक रूप से सुसंगत था यदि डेटा एक्सेस सभी डेटा-रेस फ्री हैं।
हेलग्रिंड टूल (वेलग्रिंड का हिस्सा) इस तरह का होता है-पहले डेटा-आधारित पता लगाने के रूप में कई वाणिज्यिक उपकरण करते हैं (जैसे, इंटेल इंस्पेक्टर एक्सई।) आधुनिक उपकरणों में एल्गोरिदम वेक्टर थ्रेड को हर थ्रेड और सिंक्रनाइज़ेशन से जुड़े रखने पर आधारित हैं। वस्तु। मुझे लगता है कि डेटा-रेस का पता लगाने के लिए वेक्टर घड़ियों का उपयोग करने की इस तकनीक का बीड़ा मिश्रील रोनसे ने उठाया था ; कोएन डी बोशेरे: "रिकप्ले: एक पूरी तरह से एकीकृत व्यावहारिक रिकॉर्ड / रिप्ले सिस्टम", एसीएम ट्रांस। कंप्यूटर। Syst। 17 (2): 133-152, 1999 ।