आप शायद pthread_create रूप में एक ही दायरे में संरचना का निर्माण कर रहे हैं। एक बार गुंजाइश निकलने के बाद यह संरचना मान्य नहीं होगी।
ढेर पर संरचना के लिए एक सूचक बनाने का प्रयास करें और उस संरचना सूचक को अपने धागे को पास करें। उस मेमोरी को कहीं भी मिटाना न भूलें (थ्रेड में अगर आप इसे कभी भी इस्तेमाल नहीं करेंगे - या जब आपको इसकी आवश्यकता नहीं है)।
इसके अलावा, जैसा कि साइबरकॉन्टे ने उल्लेख किया है, यदि आप विभिन्न धागे से उस डेटा तक पहुंचने जा रहे हैं, तो आपको इसे म्यूटेक्स या महत्वपूर्ण अनुभाग से एक्सेस करना होगा।
संपादित कर सकते हैं 14 वीं, 2009 @ 12:19 PM EST: इसके अलावा, के रूप में अन्य लोगों का उल्लेख किया है, तो आप को सही प्रकार पर अपने पैरामीटर कास्ट करने के लिए किया है।
void my_thread_func(void* arg){
my_struct foo = *((my_struct*)(arg)); /* Cast the void* to our struct type */
/* Access foo.a, foo.b, foo.c, etc. here */
}
या, यदि आप एक से गुजर रहे हैं:
आप एक ऐसा वैरिएबल एक वैश्विक संरचना (जो तुम पर जोर हो रहे हैं) है गुजर रहे हैं, तो अपने धागा समारोह प्रकार के कास्ट करने के लिए होगा आपकी संरचना के लिए सूचक:
void my_thread_func(void* arg){
my_struct* foo = (my_struct*)arg; /* Cast the void* to our struct type */
/* Access foo->a, foo->b, foo->c, etc. here */
}
स्रोत
2009-05-14 15:27:45
दरअसल, मैंने मुख्य फ़ंक्शन में धागा बनाया और हेडर फ़ाइलों को शामिल करने के बाद संरचना को सही बनाया। तो यह सभी कार्यों द्वारा सुलभ होना चाहिए (अगर मैं गलत हूं तो मुझे सही करें)। – skinderneath
आपका हालिया संपादन अब तक का सबसे उपयोगी पोस्ट था। धन्यवाद। – skinderneath
धन्यवाद, यह मेरे बेकन को बचाया। – g33kz0r