आपको strtok
या strtok_r
का उपयोग न करने पर विचार करना चाहिए। इनके समान अपने स्वयं के कार्यों को लिखना तुच्छ है, लेकिन आप जिस तरह से उनका उपयोग करना चाहते हैं, उससे बेहतर तरीके से तैयार किए गए हैं, और निश्चित रूप से कॉलर सभी राज्यों को स्टोर करते हैं और थ्रेड-सुरक्षा/पुनर्वितरण के लिए राज्य में एक सूचक को पास करते हैं।
strtok
पर कॉल के आस-पास एक सेमफोर (या अन्य लॉकिंग आदिम) का उपयोग करने के बारे में आपके प्रश्न के लिए, यदि आप इसे वास्तविक कॉल के आसपास रखते हैं तो इससे मदद नहीं मिलेगी। आपको strtok
की आंतरिक स्थिति की सुरक्षा के लिए स्ट्रिंग को पार्स करने की पूरी प्रक्रिया के दौरान लॉक रखना होगा। मेरा मानना है कि यह डेटा के स्थान पर लॉकिंग कोड के रूप में संदर्भित करता है और इसे आमतौर पर एक खराब बात माना जाता है।
स्रोत
2010-11-30 05:33:19
डुप्लिकेट: http://stackoverflow.com/questions/4031075/strtok-function-thread-safety – Necrolis
कृपया इसे डुप्लिकेट के रूप में बंद न करें। जवाब संबंधित हैं लेकिन यह वही नहीं है। यहां, ओपी इस बारे में सलाह मांग रहा है कि इसके कारण किसी समस्या को डीबग करने की बजाय 'स्ट्रोकोक' की गैर-पुनर्वित्त को कैसे संभाला जाए। –