क्या उद्देश्य-सी के एनएसटीएचड के बिना वर्तमान में चल रहे थ्रेड के किसी भी प्रकार के थ्रेड पहचानकर्ता को प्राप्त करने का कोई तरीका है।मैक/आईफोन: उद्देश्य-सी का उपयोग किए बिना थ्रेड पहचानकर्ता प्राप्त करने का कोई तरीका है?
मैं कई धागे ठीक से संभालने के लिए हमारी कस्टम डीबग ट्रेसिंग सिस्टम में सुधार कर रहा हूं। ट्रेस आउटपुट की प्रत्येक पंक्ति के लिए, मैं एक थ्रेड आईडी या थ्रेड नाम मुद्रित करना चाहता हूं। थ्रेड को विभिन्न तरीकों से तत्काल किया जाता है, उदा। NSOperationQueue और pthread दोनों कार्यों का उपयोग किया जाता है।
मेरे पास वर्तमान में निम्नलिखित दो विकल्प हैं, लेकिन मैं इनमें से किसी से भी संतुष्ट नहीं हूं। क्या कोई अन्य विकल्प भी हैं?
pthread_t विकल्प
pthread_t
एक मंच विशिष्ट _opaque_pthread_h
की एक typedef हो रहा है। अब _opaque_pthread_h
के फ़ील्ड्स का उपयोग करना ठीक होगा, भले ही यह हैक-वाई है और पोर्टेबल नहीं है। इसमें __sig
प्रकार का क्षेत्र लंबा है, लेकिन ऐसा लगता है कि मेरी प्रक्रिया के सभी धागे के लिए एक ही मूल्य है।
NSThread विकल्प
[NSThread name]
स्थान पर होने NSAutoreleasePool
आवश्यकता है, लेकिन मैं अपने कोड के अधिकांश के रूप में शुद्ध सी ++ है कि एक आवश्यकता है, इसलिए यह सिर्फ ग शुरू करने के लिए करने के लिए अच्छा होगा नहीं करना चाहती ++ autorelease पूल लपेटन के बिना समारोह।
महान काम करता है, thanx! – JOM
ओह, यह पहले से उपयोग की जा रही विधि से बहुत बेहतर है - थ्रेड के NSDictionary में मानों को सेट करना और पुनर्प्राप्त करना। धन्यवाद! (ओएसएक्स 10.4 का समर्थन करना।) – Marc
'pthread_mach_thread_np'' pthread_self' के समान सीमाओं को पीड़ित नहीं करता है? अर्थात्, 'thread_id' अधिक बार फिर से अपेक्षित/वांछित पुन: उपयोग करते हैं? – jww