के बगल में एक थ्रेड के लिए क्या है एक लिनक्स प्रक्रिया में, प्रत्येक थ्रेड का अपना ढेर होता है। इसके अलावा, प्रत्येक धागे के लिए स्थानीय क्या है। मैंने फाइल आवंटन तालिका, आदि जैसे चीजें पढ़ी हैं ... क्या कोई मुझे उन चीज़ों की एक सूची प्रदान कर सकता है जो थ्रेड के लिए विशिष्ट हैं और स्मृति में उन्हें कैसे व्यवस्थित किया जाता है।स्टैक
दूसरे, मैं देखा है कि जब मैं एक धागा करने के लिए एक ढेर आवंटित (नीचे दिए गए कोड को देखें), धागा समारोह में पहली चर का पता किसी भी तरह काफी बाइट्स ढेर पते जो मैं आवंटित (stackAddr) के बाद । मुझे लगता है कि ऐसा इसलिए है क्योंकि स्टैक का शीर्ष आवंटित स्टैक मेमोरी का अंतिम पता है, क्योंकि स्थानीय चर के पते के मूल्य में अंतर और आवंटित स्टैक लगभग स्टैक का आकार है (STACKSIZE)। दूसरे शब्दों में, ऐसा लगता है कि यह नीचे से ऊपर की तरफ बढ़ रहा है।
pthread_attr_init(&attr[tid]);
stackAddr = malloc(STACKSIZE);
pthread_attr_setstack(&attr, stackAddr, STACKSIZE);
हां, ढेर दूसरी दिशा में बढ़ता है, इसलिए आपने अपने प्रश्न का उत्तर दिया। –
@yi_H, लेकिन मुझे किसी को अपने प्रश्न के पहले भाग का जवाब देने की आवश्यकता है: -पी! – MetallicPriest