程序、進程、線程
程序:由源代碼生成的可執行應用。 (例如:QQ.app)
進程:一個正在運行的程序可以看做一個進程,(例如:正在運行的QQ警示一個勁曾),進程擁有獨立運行所需要的全部資源
線程:程序中獨立運行的代碼段。(例如:接收QQ消息的代碼)
一個進程是由一或多個線程組成,進程只負責資源的調度和分配,線程才是程序真正的執行單元,負責代碼的執行。
單線程
每個正在運行的程序(即進程),至少包括一個線程,這個線程叫主線程
主線程在程序啟動時被創建,用于執行main函數
只有一個主線程的程序,稱作單線程程序
主線程負責執行程序的所有代碼(UI展現以及刷新,網絡請求,本地存儲等等)。這些代碼只能順序執行,無法并發執行
多線程
擁有多個線程的程序,稱作多線程程序。
iOS允許用戶自己開辟新的線程,相對于主線程來講,這些線程,稱為子線程
可以根據需要開辟若干子線程
子線程和主線程都是獨立的運行單元,各自的執行互不影響,因此能夠并發執行
單線程、多線程的區別
單線程程序:只有一個線程,代碼順序執行,容易出現代碼阻塞(頁面假死)
多線程程序:有多個線程,線程間獨立運行,能有效地避免代碼阻塞,并且提高程序的運行性能
注意:iOS中關于UI的添加和刷新必須在主線程中操作
iOS平臺下得多線程
iOS多線程 實現種類
NSThread
NSOperationQueue
NSObject
GCD
NSThread
NSThread是一個輕量級的多線程,它有以下兩種創建方法:
注意:
在多線程方法中,需要添加自動釋放池
在應用程序打開的時候,系統會自動為主線程創建一個自動釋放池
我們手動創建的子線程需要我們手動添加自動釋放池
|
新聞熱點
疑難解答