標籤:
本文主要是我對多線程的總結,當是給自己的個複習,也可以給別人一些參考。
還是從簡單開始,先介紹一些概念性的東西,雖然簡單,但是理解的深刻程度決定了是否能正解使用多線程的,還有用得有多好。
線程:線程是程式中一個單一的順序控制流程程,是線程中的一個實體,一個標準的線程由線程ID,當前指令指標(PC),寄存器集合和堆棧組成。
它有以下屬性:
1、輕型實體 。2、獨立調度和指派的基本單位。3、可並發執行。4、共用進程資源。
接下來就是在iOS中能夠使用的四種多線程編程方式:
(一)pthread
這裡並不會很詳細的去講解它,百度上是這麼說的:
POSIX線程(POSIX threads),簡稱Pthreads,是線程的POSIX標準。該標準定義了建立和操縱線程的一整套API。在類Unix作業系統(Unix、Linux、Mac OS X等)中,都使用Pthreads作為作業系統的線程。Windows作業系統也有其移植版pthreads-win32。
iOS開發中很少直接使用它。要使用它就得使用pthread.h中的一系列C介面,使用那些底層介面去建立,調度,管理線程,相對複雜,並且要考慮的問題會很多。
(二)NSThread
它是蘋果對pthread的進一步封裝,並且是物件導向的。封裝後我們面對的是線程對象,而且它的介面也更好理解,使用起來更加直觀和方便。
(三)Grand Central Dispatch(GCD).
它是蘋果開發的一個多核編程的解決方案。使用GCD,它會自動管理線程的生命週期(建立線程、調度任務、銷毀線程),完全不需要我們管理,我們關注重心只要在自己的任務,並把任務投入到相應的隊列。GCD使用的也是 c語言,結合使用了 Block,使得使用起來更加方便,而且靈活。
(四)NSOperation
NSOperation在iOS 4.x以後也是基本CGD封裝的,它是CGD物件導向的封裝,並且提供有用且安全執行緒的建立狀態,優先順序,依賴和取消等操作。
iOS 多線程開發