获取当前方法调用的线程 ID

有没有一种方法可以打印出当前方法正在其上执行的当前线程 ID?

(目标 -c 请)

64269 次浏览
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 output

Uint64 _ t tid; Pthread _ thread _ np (NULL,& tid) ;