有没有一种方法可以打印出当前方法正在其上执行的当前线程 ID?
(目标 -c 请)
NSLog(@"%@", [NSThread currentThread]);
#include <pthread.h> ... mach_port_t machTID = pthread_mach_thread_np(pthread_self()); NSLog(@"current thread: %x", machTID);
你可以像下面这样编程(这个打印出来很漂亮,但是你可以继续分割直到你得到号码) :
+ (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; }
在斯威夫特
print("Current thread \(NSThread.currentThread())")
在 Swift 5 中
print("Current thread \(Thread.current)")
在 Swift4
print("\(Thread.current)")
NSLog向控制台输出一个数字(在冒号后的方括号中) ,标识调用它的线程。
NSLog
Uint64 _ t tid; Pthread _ thread _ np (NULL,& tid) ;