IOS開發之多線程與GCD,ios多線程gcd

來源:互聯網
上載者:User

IOS開發之多線程與GCD,ios多線程gcd

線程的執行 :

明顯可以看出,如果不開啟多線程的話,程式先走runA方法在走runB,然後再回到runA,再走runC ,A-->B-->C。

如果runA在載入網路請求(比如載入圖片),這樣的話就會阻塞主線程,也就是說先載入完圖片在走下面的方法,比如runC是一個點擊事件,圖片還沒載入出來的時候,點擊事件是不響應的,這需要什麼方法取解決呢?這就得開啟多線程了。


多線程的執行 

開啟多線程之後在走runB的同時也在走runC,這樣就不會租塞主線程了。


多線程的基本概念:

1.每一個程式都有一個主線程,程式啟動是建立(調用main函數來建立)。

2.主線程的生命週期是和應用程式綁定的,程式退出,主線程也就停止了。

3.多線程技術表示,一個應用程式有多個線程,使用多線程能提供CPU的使用率,防止主線程阻塞。

4.任何有可能阻塞主線程的任務不要在主線程中執行(比如執行網路)。


多線程使用的注意

1.線程使用不是無節制的,iso中的主線程的堆棧大小是1M,從第二個線程開始是512KB,這些數值不能通過編譯器開關或線程API函數更改。

2.只有主線程有直接修改UI的能力(比如要設定image,得先回到主線程中設定)。


子線程的記憶體管理:需要加入自動釋放池中


IOS中的三種多線程技術

1.pthread是POISIX線程的API,是C語言的技術,可以直接操作線程。

2.NSThread是每個NSThread對象對應一個線程,量級較輕,是對pthread的抽象。

3.GCD(Grand Central Dispatch)是基於C語言的架構,使用隊列管理線程,可以充分利用多核。

4.NSOperation/NSOperationQueue是物件導向的線程技術,是對GCD的抽象。


三種多線程的技術對比

一:NSThread

1.優點:NSThread比其他兩個輕量級,使用簡單。

2.缺點:需要自己管理線程的生命週期、線程同步、加鎖、睡眠以及喚醒,線程的同步對線程的加鎖會有一定的系統開銷。

二:NSOperation

1.不需要關心線程管理,資料同步的事情,可以把精力放在自己需要操作的執行上

2.NSOperation是物件導向的

三:GCD

1.是由蘋果開發的一個多核編程的解決方案,ios4.0後才可以用,是替代以上兩種的進階和強大的技術。

2.是基於C語言的


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.