2011-05-11 13 views
6

जब अन्य थ्रेड के संदर्भ में गिना वस्तुओं भेजने, यह बेहतर अंगूठे का एक बेहतर शासन धागे या धागा भीतर शुरू करने से पहले संख्या में भी वृद्धि करने के लिए है?संदर्भ गणना बढ़ाने के लिए अंगूठे का नियम क्या है?

एक अधिक सामान्य अर्थ में, मैं (एक समारोह के रूप) पैरामीटर मेरे लिए पारित कर मान लेना चाहिए पहले से ही के लिए है या नहीं हिसाब कर रहे हैं?

+0

संदर्भ में यह तकनीक क्या है? विभिन्न तकनीकों के अलग-अलग जवाब हो सकते हैं। (@closevoter: मेरे लिए एक असली सवाल की तरह लगता है यह स्पष्टीकरण का एक सा की आवश्यकता हो सकती है, लेकिन ...।) –

+0

अच्छा बिंदु, मैं विशेष रूप से सी की चर्चा करते हुए हूँ, लेकिन मैं यह है कि ऐसा नहीं करता किसी भी भाषा के लिए आवेदन कर सकते हैं लगता है मूल रूप से कार्यान्वित संदर्भ गणना है। –

उत्तर

4

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

इसके अलावा ध्यान दें कि इस तरह के कीड़े शायद एक लंबे समय के लिए चल पाता जाना होगा, क्योंकि यह सांख्यिकीय रूप से असामान्य है नया थ्रेड तुरंत चलाने के लिए नहीं करने के लिए। असल में यह संभवतः आपके ग्राहक/ग्राहक होंगे जो पहले बग देखते हैं ... :-)

+0

धन्यवाद! यही वह टुकड़ा है जिसे मैं स्वीकार नहीं कर सकता ... बच्चे के बारे में दावा करने से पहले माता-पिता के संदर्भ को मुक्त कर सकते हैं। –

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