मैं एक ऐसे प्रोजेक्ट पर काम कर रहा हूं जो बहुत अधिक थ्रेडेड है, और यह सोच रहा था कि कंपाइलर को सी लाइब्रेरी में गैर-पुनर्वित्त कॉल का उपयोग करने का कोई तरीका है (उदाहरण के लिए strtok_r का strtok intsead)? यदि नहीं, तो क्या कॉल की एक सूची है जो गैर-पुनर्वित्तक है इसलिए मैं समय-समय पर अपने कोड आधार के माध्यम से grep कर सकता हूं?क्या गैर-पुनर्विक्रेता सी लाइब्रेरी कॉल के उपयोग को ध्वजांकित करने का कोई तरीका है?
एक संबंधित प्रश्न यह है कि अगर 3 डी पार्टी लाइब्रेरी गैर-पुनर्वित्त कॉल के उपयोग को ध्वजांकित करने का कोई तरीका है।
मुझे लगता है कि पुनर्वितरण थ्रेड-सुरक्षा का तात्पर्य है, लेकिन जरूरी नहीं कि अन्य तरीकों से। क्या थ्रेडेड प्रोजेक्ट में गैर-पुनर्वित्त कॉल का उपयोग करने का कोई अच्छा कारण है?
प्रश्न - क्या सभी सी रनटाइम कॉल लिनक्स में हैं जो कॉल के बीच स्थिति बनाए रखती हैं (जैसे मॉलोक, रैंड, स्ट्रोक, इत्यादि ...) स्वाभाविक रूप से गैर-थ्रेडसेफ? या क्या इन कॉल के लिए थ्रेड सुरक्षित संस्करण से लिंक करने के लिए एक कंपाइलर/लिंकर निर्देश है? मैं वास्तव में सोच रहा हूं कि थ्रेड सुरक्षा के लिए हल करने में वास्तव में कोई समस्या है या नहीं। – selbie
@selbie: नहीं, यह भिन्न होता है। उदाहरण के लिए, [malloc] (http://www.bozemanpass.com/info/linux/malloc/Linux_Heap_Contention.html) आमतौर पर थ्रेडसेफ होता है। 'रैंड()' का धागासात्व वैसे भी दार्शनिक प्रश्न है। एक परिपूर्ण 'रैंड' कार्यान्वयन (एक ओरेकल) मूल रूप से थ्रेडसेफ होगा। – MSalters