我看到了几个问题,比如this,当只传递handler时,关于post vs dispatch的问题,handler被发布在相关的执行器上。我理解当当前执行在相关的执行器上执行时,dispatch可以调用handler的同步调用,而无需排队。我原以为同样的原理也适用于second overload,但在文档中特别指出The function object is queued for execution, and is never called from the current thread prior to returning from dispatch()
。
那么,在这种情况下,邮递和派送有什么区别呢?
1条答案
按热度按时间hfwmuf9z1#
您正在链接到旧文档。
此外,即使在那个版本中,非执行器重载的文档也说了完全相同的事情,所以所谓的差异并不存在。
我认为这是文档中的一个疏忽¹,即使在那时,current versions也明确表示可以在返回之前调用处理程序:
函数对象可以在从dispatch()返回之前从当前线程调用
旁注
我想指出的是,即使在从
dispatch
本身返回之前没有调用调用,调用仍然可以被优化,因为2019 - 07 - 19 01:01:02 01:03 01:03 01:03 01:03 01:03 01:03 01:03 01:03 01:03 01:03 01:03 01:03 01 02:03 02 02:03 03 02:04 03 02:03 03 03 04:04 03 04:05 04 05 05:05 05 05 05:05 05 05 05 05:05 05 05 05 05 05:05 05 05 05 05:05 05 05 05 05:05 05 05 05 05:05