मेरे बहु-थ्रेडेड प्रबंधित कार्यक्रम में मेरा ढेर भ्रष्टाचार है। कुछ परीक्षण करने से मुझे पता चला कि भ्रष्टाचार तब होता है जब पृष्ठभूमि में पृष्ठभूमि धागे सक्रिय होते हैं (वे स्विच करने योग्य होते हैं)। धागे कुछ तीसरे पक्ष के घटकों का उपयोग करते हैं।.NET 4: क्या प्रबंधित कोड अकेले भ्रष्टाचार का कारण बन सकता है?
धागे और 3 पार्टी घटकों के कोड (.NET परावर्तक के साथ) परीक्षण करने के बाद मैंने पाया कि वे सभी प्रबंधित कर रहे हैं, अर्थात कोई "असुरक्षित" या "DllImportAttribute" या "पी/आह्वान"। ऐसा लगता है कि पूरी तरह से प्रबंधित कोड एक ढेर भ्रष्टाचार का कारण बनता है, क्या यह संभव है?
अद्यतन मार्शल वर्ग का उपयोग करने से
अलावा, यह भ्रष्ट करने के लिए संभव धागे के साथ ढेर सही ढंग से सिंक्रनाइज़ नहीं किया जा रहा है? एक उदाहरण की बहुत सराहना की जाएगी।
सिर्फ इसलिए कि वे कर रहे हैं के साथ है सभी प्रबंधित, इसका मतलब यह नहीं है कि सबकुछ थ्रेड सुरक्षित है। क्या आप सुनिश्चित कर रहे हैं कि लॉक सुरक्षित तरीके से कोड निष्पादित करता है, ताले आदि का उपयोग करते हुए जहां आवश्यक हो? –
मार्शल क्लास विधियां भी हैं जो यह कर सकती हैं। –
@ क्रिससुनवे, क्या आप कह रहे हैं कि गैर-थ्रेड-सुरक्षित तरीके से अनुचित लॉकिंग या थ्रेड निष्पादित करना मार्शल क्लास का उपयोग किये बिना भी ढेर को दूषित कर सकता है? मेरे पास एक जवाब था कि यह संभव नहीं है ([यहां] (http://stackoverflow.com/questions/7471288/what-tools-are- उपलब्ध-to-detect-heap-corruption-in-net-c-program/ 7471468 # 7471468))। –