BSBacktraceLogger icon indicating copy to clipboard operation
BSBacktraceLogger copied to clipboard

一个貌似重复判断的小问题

Open ShowHandAce opened this issue 6 years ago • 0 comments

大神你好.拜读代码和博客,写的都非常详细,对我帮助很大.十分感谢~ 现在有个小问题:代码173行和179行有两次主线程判断,能否解释一下为什么这样做?是有什么特殊的处理吗? 个人理解第一个主线程判断 return 掉以后,第二个判断应该是走不到的. 望解答~

if ([nsthread isMainThread]) {
    return (thread_t)main_thread_id;
}

for (int i = 0; i < count; ++i) {
    pthread_t pt = pthread_from_mach_thread_np(list[i]);
    if ([nsthread isMainThread]) {
        if (list[i] == main_thread_id) {
            return list[i];
        }
    }
    if (pt) {
        name[0] = '\0';
        pthread_getname_np(pt, name, sizeof name);
        if (!strcmp(name, [nsthread name].UTF8String)) {
            [nsthread setName:originName];
            return list[i];
        }
    }
}

ShowHandAce avatar Aug 24 '18 07:08 ShowHandAce