iOS_多線程_GCD

來源:互聯網
上載者:User

標籤:ios   gcd   並發   串列   

1、GCD串列隊列+非同步dispatch說明:非常非常非常有用的操作非同步,表示會在主線程之外開新的線程,但由於 隊列是串列的,故只開一個(只開一個)新的線程當dispatch指派好block之後,主線程立即返回,繼續向下執行串列隊列,表示:被指派到此隊列的block們,將FIFO有序地一個接一個執行dispatch_async說明:立即返回,從不等待,隊列決定是serially還是concurrently,block_copy(),block_release()

程式運行結果輸出:可以看到:串列隊列+非同步方式向隊列添加block,只會新開一個線程,所有被添加的block在新開的線程裡,愉快而有序地執行

2、GCD串列隊列+同步dispatch (極少使用)同步表示:不會開新線程,就在主線程上運行串列表示:所有block一個接一個運行



3、並行隊列+非同步dispatch(容易失控)

開多條新線程(具體開幾個無法控制),block執行沒有順序,程式員無法控制執行順序



4、並發隊列+同步dispatch

關鍵:因為同步,則不會開新線程,直接使用主線程,

        雖然是並發隊列,但由於可有一個執行路線,所以會順序執行




5、發散思維--->串列隊列先同步dispatch十個block,再非同步dispatch十個block既然是同步指派:就是在主線程上執行,完畢後,再非同步指派:開新線程,由於隊列是串列,故,只會開一條新線程,一個接一個愉快地執行


6、發散思維--->並行隊列中,先同步指派10個block,再非同步指派10個blcok只要是同步dispatch,就只會在主線程上運行再非同步指派,就一定會開新線程,由於是並行隊列:故會開N條新線程,N數量不可控制,block們的執行順序也不可控制















iOS_多線程_GCD

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.