Seb*_*ldt 4 multithreading objective-c grand-central-dispatch swift
是否真的有必要在异步分派给它之前检查当前线程是否是主线程?在性能或其他方面有什么优势吗?
我知道从同一个队列同步调度会导致死锁。但是我真的需要像以下代码段中的某人那样检查当前线程吗?
+ (void)dispatchOnMainThread:(void (^)(void))task
{
if ([NSThread isMainThread]) // Is this necessary?
{
task();
}
else
{
dispatch_async(dispatch_get_main_queue(), task);
}
}
Run Code Online (Sandbox Code Playgroud)
但是我是否真的需要像以下代码段中的某人那样检查当前线程
并不真地。如果您已经在主线程上,那么当您的代码结束时,您的dispatch_async块将被分派。所以可能会有一点延迟,因为我们需要当前的运行循环/事务结束,但不会很明显。
我一直使用dispatch_async主线程,以确保在我不确定的情况下(例如 KVO 回调)我在主线程上。没有伤害,没有犯规。这只是一种形式的保险。