小编典典

GCD 在主线程中执行任务

all

我有一个可能来自任何线程的回调。当我得到这个回调时,我想在主线程上执行某个任务。

我是否需要检查我是否已经在主线程上 - 或者在调用下面的代码之前不执行此检查是否有任何惩罚?

dispatch_async(dispatch_get_main_queue(), ^{
   // do work here
});

阅读 111

收藏
2022-05-07

共1个答案

小编典典

不,您不需要检查您是否已经在主线程上。通过将块分派到主队列,您只是将块安排在主线程上串行执行,这发生在相应的运行循环运行时。

如果您已经在主线程上,则行为是相同的:该块被调度,并在主线程的运行循环运行时执行。

2022-05-07