में मजबूत थ्रेड-स्थानीय स्टोरेज कैसे करें मुझे विभिन्न आईओएस ऐप्स में लिंक करने के लिए डिज़ाइन की गई लाइब्रेरी में pthread_getspecific
से गलत परिणाम प्राप्त करने में कुछ समस्याएं आ रही हैं।आईओएस
मुझे लगता है कि Apple writes:
कोको और POSIX अलग अलग तरीकों से धागा शब्दकोश की दुकान है, तो आप मिश्रण नहीं कर सकते हैं और मैच दो प्रौद्योगिकियों के लिए कहता है। जब तक आप अपने थ्रेड कोड के अंदर एक तकनीक के साथ चिपके रहते हैं, तब तक, अंतिम परिणाम समान होना चाहिए। कोको में, आप NSMutableDictionary ऑब्जेक्ट को पुनर्प्राप्त करने के लिए NSThread ऑब्जेक्ट की थ्रेड डिक्शन विधि का उपयोग करते हैं, जिसमें आप अपने थ्रेड द्वारा आवश्यक कोई भी कुंजी जोड़ सकते हैं। POSIX में, आप अपने धागे की चाबियाँ और मान सेट करने और प्राप्त करने के लिए pthread_setspecific और pthread_getspecific फ़ंक्शंस का उपयोग करते हैं।
मतलब यह है कि न कोको और न ही POSIX टीएलएस कार्यों पुस्तकालय कोड में काम करने के लिए जब हम चाहे कोड हमें कॉल कि पहले से ही एक या अन्य उपयोग कर रहा है पता नहीं है उम्मीद की जा सकती है?
इन परिस्थितियों में कोई थ्रेड-स्थानीय सूचक को कैसे स्टोर और पुनर्प्राप्त करने के लिए मिलता है?
क्या कोई मूल डार्विन टीएलएस समर्थन API है जिसे हमें कोको या पॉज़िक्स के बजाय उपयोग करना चाहिए?
** हल किया गया **: शुरुआती रूप से मुझे संदेह है कि मुझे pthread_getspecific के खराब होने का संदेह है, कार्यक्रम में कहीं और एक असंबंधित दौड़ की स्थिति से छोड़े गए पॉइंटर्स को लटकाने के कारण बन गया है। –