मैक का निर्माण (मुख्य रूप से पीओएसआईक्स) एप्लिकेशन एक बच्चे के धागे को जन्म देता है जो सीएफआरन लूप्रुन() को इवेंट लूप करने के लिए कहते हैं (मैकोज़ से नेटवर्क कॉन्फ़िगरेशन परिवर्तन ईवेंट प्राप्त करने के लिए)।क्या यह किसी अन्य धागे से CFRunLoopStop को कॉल करना सुरक्षित है?
जब चीजों को पैक करने और दूर जाने का समय होता है, तो मुख्य धागा बच्चे के धागे के रन-लूप पर CFRunLoopStop() को कॉल करता है, जिस बिंदु पर CFRunLoopRun() बच्चे के थ्रेड में वापस आता है, बाल थ्रेड निकलता है, और मुख्य धागा (जो बच्चे के धागे से बाहर निकलने के लिए इंतजार कर रहा था) जारी रख सकता है।
यह काम पर प्रतीत होता है, लेकिन मेरा सवाल यह है: क्या यह करने के लिए यह एक सुरक्षित/अनुशंसित तरीका है? विशेष रूप से, एक अन्य धागे से CFRunLoopStop() को रेस हालत का कारण बनने के लिए उत्तरदायी है? जहां तक मैं कह सकता हूं, ऐप्पल का दस्तावेज इस विषय पर चुप है।
यदि मुख्य धागे से CFRunLoopStop() को कॉल करना समाधान नहीं है, तो एक अच्छा समाधान क्या है? मुझे पता है कि मेरे पास बच्चे थ्रेड कॉल CFRunLoopRunInMode() हो सकता है और बुलियन या कुछ जांचने के लिए हर बार जागता है, लेकिन अगर मैं इससे बच सकता हूं तो मैं बच्चे के धागे को कोई मतदान नहीं करना चाहूंगा।