dispatch_async & dispatch_sync



博客搬家咯~ http://joeleee.github.io/

博客搬家咯~ http://joeleee.github.io/

博客搬家咯~ http://joeleee.github.io/

 

Clear that!

 

dispatch_async 是将block发送到指定线程去执行,当前线程不会等待,会继续向下执行。

dispatch_sync 也是将block发送到指定的线程去执行,但是当前的线程会阻塞,等待block在指定线程执行完成后才会继续向下执行。

 

所以为什么 dispatch_sync 使用不当时,容易对当前线程造成死锁就容易分析了~

 

dispatch_sync 和 dispatch_async 将block加入到指定线程中后,指定线程都是串行执行的,既FIFO。 所以说 dispatch_sync(queue, ^{}); 这句代码还是有意义的~ 会阻塞当前线程等待queue中的所有任务执行完成后再向下执行。

 

不过暂时俺还没有碰到有必要使用 dispatch_sync 的地方, 看了网上说的 “数据库需要并发I/O的时候dispatch_sync” ,还是不大了解是什么个场景~ 期待大神点拨。。。

 

本文理解有误,看这里吧:http://joeleee.github.io/2017/02/21/%E6%89%92%E4%BA%86%E6%89%92libdispatch%E6%BA%90%E7%A0%81/

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM