1. 多線程概述 1> 程式、進程和進程的概念 程式:由源代碼生成的可執行應用。(例如:QQ.app) 進程:一個正在運行的程式可以看做一個進程。(例如:正在運行的QQ就是一個進程),進程擁有獨立運行所需的全部資源。 線程:程式中獨立運行的代碼段。(例如:接收QQ消息的代碼) 一個進程是由一或多個線 ...
1. 多線程概述
1> 程式、進程和進程的概念
-
程式:由源代碼生成的可執行應用。(例如:QQ.app)
-
進程:一個正在運行的程式可以看做一個進程。(例如:正在運行的QQ就是一個進程),進程擁有獨立運行所需的全部資源。
-
線程:程式中獨立運行的代碼段。(例如:接收QQ消息的代碼)
-
一個進程是由一或多個線程組成。進程只負責資源的調度和分配,線程才是程式真正的執行單元,負責代碼的執行。
2> 單線程
-
每個正在運行的程式(即進程),至少包含一個線程,這個線程叫主線程。
-
主線程在程式啟動時被創建,用於執行main函數。
-
只有一個主線程的程式,稱作單線程程式。
-
在單線程程式中,主線程負責執行程式的所有代碼(UI展現以及刷新,網路請求,本地存儲等等)。這些代碼只能順序執行,無法併發執行。
3> 多線程
-
擁有多個線程的程式,稱作多線程程式。
-
iOS允許用戶自己開闢新的線程,相對於主線程來講,這些線程,稱作子線程。
-
可以根據需要開闢若幹子線程
-
子線程和主線程 都是 獨立的運行單元,各自的執行互不影響,因此能夠併發執行。
4> 單線程和多線程區別
-
單線程程式:只有一個線程,即主線程,代碼順序執行,容易出現代碼阻塞(頁面假死)。
-
多線程程式:有多個線程,線程間獨立運行,能有效的避免代碼阻塞,並且提高程式的運行性能。
-
註意:iOS中關於UI的添加和刷新必須在主線程中操作。
2. NSThread與NSObject創建多線程
1> NSThread創建方法