菜鸟教程小白 发表于 2022-12-12 09:28:03

ios - dispatch_async 何时实际调度?


                                            <p><p>假设我有以下代码:</p>

<pre><code>dispatch_async(dispatch_get_main_queue()) {
    myFunction()
}
</code></pre>

<p>这表示异步调用 block ,它调用 <code>myFunction</code>。假设我在我的主队列中调用了这段代码,这也是为 <code>dispatch_async</code> 调用指定的队列。</p>

<p>在这种情况下,这个 block 什么时候真正被调用?我当前的队列是否被抢占并且 block 立即运行,或者当前调用堆栈展开并且 block 在下一个事件循环中被调用?或者是其他东西? </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><blockquote>
<p>When does this block actually get called in this case? Does my current queue get pre-empted and the block run immediately, or does the current call stack unroll and the block gets called at the next event loop? Or something else?</p>
</blockquote>

<p>简而言之,如果您从主队列异步分派(dispatch)到主队列,则分派(dispatch)的 block 将不会运行,直到您返回到主运行循环(并且在分派(dispatch)到主队列的任何其他 block 也完成之后)。 </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - dispatch_async 何时实际调度?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/33204684/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/33204684/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - dispatch_async 何时实际调度?