ios - 主队列上的调度屏障

标签 ios objective-c multithreading grand-central-dispatch asyncdisplaykit

所以我正在阅读 Facebook 的精彩内容 AsyncDisplayKit 源代码。具体来说,我正在阅读 ASDealloc2MainObject 背后的实现。一件事引起了我的注意。

_AS-objc-internal.h, line 423 to 424 ,程序员将一些任务分派(dispatch)到主队列。

        dispatch_barrier_async_f(dispatch_get_main_queue(), self,           \
            _objc_deallocOnMainThreadHelper);                               \

与其他调度屏障函数一样,dispatch_barrier_async_f() 中的屏障逻辑仅在处理自定义并发队列时才有意义。对于全局并发队列和主队列,它的行为就像 dispatch_async_f() 一样,屏障无效。

那么为什么要在这里使用屏障呢?

最佳答案

在我看来这是个错误。充其量,他们试图发出意图信号并提醒程序员“嘿,这东西是串行的”,但这似乎很可疑。

关于ios - 主队列上的调度屏障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27425760/

相关文章:

linux - 当另一个线程在 Perl 中停止时停止一个线程

c# - 使用多线程会加速我的 HTML 文件处理应用程序吗?

ios - 在 Storyboard和代码中使用约束

ios - 将 pdf 的内容读取为字符串

ios - 将 UITabBar 放置在 UITabBarController 中的屏幕顶部

ios - MMDrawerController 我需要在哪里添加 sidemen 按钮?

ios - 获取内存泄漏 - NSData 转换

ios - Git 子模块与 iOS/Mac 框架

objective-c - 为 Mac OS X 编写自定义桌面通知,例如音量弹出窗口

c - GDK 线程不允许 gtk 更改(制作计时器)