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