2009-10-24 18 views
110

क्या वर्तमान थ्रेड आईडी मुद्रित करने का कोई तरीका है जिस पर वर्तमान विधि निष्पादित हो रही है?वर्तमान विधि कॉल की थ्रेड आईडी प्राप्त करना

(ऑब्जेक्टिव-सी कृपया)

+3

nall सवाल का जवाब नहीं, बल्कि असली सवाल .... तुम क्यों जानना चाहते हैं? डीबगिंग या सही व्यवहार करने के अलावा, वर्तमान थ्रेड पर मूल सामग्री * आम तौर पर * एक बुरा विचार है। – bbum

+0

मुझे इसके लिए किसी अन्य ऑब्जेक्ट से जुड़े थ्रेड-स्थानीय ऑब्जेक्ट्स बनाने की आवश्यकता है (यानी एक मूल ऑब्जेक्ट _and_ थ्रेड से जुड़ा हुआ - न केवल थ्रेड)। – adib

उत्तर

202
NSLog(@"%@", [NSThread currentThread]); 
+6

{name = (null), num = 1} – Rajneesh071

+0

नाम = (शून्य) का अर्थ क्या है, यदि धागा मुख्य है तो यह NSThread: 0x60800006cb80> {number = 1, name = main} देता है, करता है इसका मतलब है "नाम = (शून्य)" पृष्ठभूमि धागे को संदर्भित करता है। –

+0

और कोई उस नाम और संख्या को कैसे पकड़ता है? 'नाम' मुख्य और 'संख्या' के लिए भी खाली विवरण देता है –

29
#include <pthread.h> 
... 
mach_port_t machTID = pthread_mach_thread_np(pthread_self()); 
NSLog(@"current thread: %x", machTID); 
+0

यह हमेशा वर्तमान धागा प्रदर्शित करता है: c07 – Rajneesh071

+3

@ राजनेश 071 दरअसल, आपने और क्या किया उम्मीद है, एक अलग थ्रेड की आईडी प्रदर्शित करें? –

+0

हाँ .. अगर मैं अलग थ्रेड पर हूं तो अलग-अलग प्रदर्शित करें। – Rajneesh071

-1

आप कुछ इस तरह ऊपर हैक कर सकते हैं (यह सिर्फ सुंदर प्रिंट, लेकिन आप आगे जाना है और जब तक आप नंबर मिल विभाजित कर सकते हैं):

+ (NSString *)getPrettyCurrentThreadDescription { 
    NSString *raw = [NSString stringWithFormat:@"%@", [NSThread currentThread]]; 

    NSArray *firstSplit = [raw componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"{"]]; 
    if ([firstSplit count] > 1) { 
     NSArray *secondSplit  = [firstSplit[1] componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"}"]]; 
     if ([secondSplit count] > 0) { 
      NSString *numberAndName = secondSplit[0]; 
      return numberAndName; 
     } 
    } 

    return raw; 
} 
11

स्विफ्ट में

print("Current thread \(NSThread.currentThread())") 
16

Swift3 में

print("Current thread \(Thread.current)") 
संबंधित मुद्दे