大家好捞高,好久沒(méi)有更新了!大家多多諒解
高技術(shù)的我就不更新了甸私,如果開(kāi)發(fā)中遇到難點(diǎn)可以直接詢問(wèn)我诚些,我一定會(huì)幫你解決
1. 多線程的應(yīng)用 主要用于耗時(shí)的操作
(1)? 耗時(shí)操作,例如網(wǎng)絡(luò)圖片皇型、視頻诬烹、歌曲、書籍等資源下載
(2)? 游戲中的聲音播放
1. 多線程基本概念
(1)? 每一個(gè)程序都有一個(gè)主線程弃鸦,程序啟動(dòng)時(shí)創(chuàng)建(調(diào)用main來(lái)啟動(dòng))
(2)? 主線程的生命周期是和應(yīng)用程序綁定的椅您,程序退出(結(jié)束)時(shí),主線程也就停止了
(3)? 多線程技術(shù)表示寡键,一個(gè)應(yīng)用程序有多個(gè)線程,使用多線程能提供CPU的使用率雪隧,防止主線程堵塞
(4)? 任何有可能堵塞主線程的任務(wù)不要在主線程執(zhí)行(訪問(wèn)網(wǎng)絡(luò))
1. 程序是計(jì)算機(jī)指令的集合西轩,它以文件的形式存儲(chǔ)在磁盤上。 每一個(gè)進(jìn)程啟動(dòng)之后脑沿,會(huì)有一個(gè)主線程藕畔,遇到耗時(shí)的操作時(shí),新建線程去執(zhí)行可以保證主線程的流暢庄拇,新建線程本身會(huì)消耗系統(tǒng)資源 線程之間要控制執(zhí)行順序相對(duì)比較復(fù)雜注服。
進(jìn)程與線程概念
(1)? 進(jìn)程:是一個(gè)程序在其自身的地址空間中的一次執(zhí)行活動(dòng)韭邓。
* 進(jìn)程是資源申請(qǐng)、調(diào)度和獨(dú)立運(yùn)行的單位溶弟,因此女淑,它使用系統(tǒng)中的運(yùn)行資源; 而程序不能申請(qǐng)系統(tǒng)資源辜御,不能被系統(tǒng)調(diào)度鸭你,也不能作為獨(dú)立運(yùn)行的單位,因此擒权,它不占用系統(tǒng)的運(yùn)行資源袱巨。
(2)? 線程:是進(jìn)程中的一個(gè)單一的連續(xù)控制流程。一個(gè)進(jìn)程可以擁有多個(gè)線程碳抄。
* 線程又稱為輕量級(jí)進(jìn)程愉老,它和進(jìn)程一樣擁有獨(dú)立的執(zhí)行控制,由操作系統(tǒng)負(fù)責(zé)調(diào)度剖效,區(qū)別在于線程沒(méi)有獨(dú)立的存儲(chǔ)空間嫉入,而是和所屬進(jìn)程中的其它線程共享一個(gè)存儲(chǔ)空間,這使得線程間的通信遠(yuǎn)較進(jìn)程簡(jiǎn)單贱鄙。
(3)? 一個(gè)運(yùn)行的程序就是一個(gè)進(jìn)程或者叫做一個(gè)任務(wù)
(4)? 一個(gè)進(jìn)程至少包含一個(gè)線程劝贸,線程是程序的執(zhí)行流
(5)? iOS程序啟動(dòng)時(shí),在創(chuàng)建一個(gè)進(jìn)程的同時(shí)逗宁, 會(huì)開(kāi)始運(yùn)行一個(gè)線程映九,該線程被稱為主線程
(6)? 主線程是其他線程最終的父線程,所有界面的顯示操作必須在主線程進(jìn)行O箍拧<!
(7)? 后臺(tái)線程無(wú)法更新UI界面和響應(yīng)用戶點(diǎn)擊事件
(8)? 系統(tǒng)中的每一個(gè)進(jìn)程都有自己獨(dú)立的虛擬內(nèi)存空間哼拔,而同一個(gè)進(jìn)程中的多個(gè)線程則共用進(jìn)程的內(nèi)存空間
(9)? 每創(chuàng)建一個(gè)新的線程引有,都會(huì)消耗一定內(nèi)存和CPU時(shí)間
(10)? ? 當(dāng)多個(gè)線程對(duì)同一個(gè)資源出現(xiàn)爭(zhēng)奪的時(shí)候需要注意線程安全問(wèn)題
1. 多線程的優(yōu)勢(shì)與難點(diǎn) 優(yōu)勢(shì) 充分發(fā)揮多核處理器優(yōu)勢(shì),將不同線程任務(wù)分配給不同的處理器倦逐,真正進(jìn)入“并行運(yùn)算”狀態(tài) 將耗時(shí)譬正、輪詢或者并發(fā)需求高等任務(wù)分配到其他線程執(zhí)行,并由主線程負(fù)責(zé)統(tǒng)一更新界面會(huì)使得應(yīng)用程序更加流暢檬姥,用戶體驗(yàn)更好 當(dāng)硬件處理器的數(shù)量增加曾我,程序會(huì)運(yùn)行更快,而無(wú)需做任何調(diào)整 NSThread 每個(gè)NSThread對(duì)象對(duì)應(yīng)一個(gè)線程健民,量級(jí)較輕 NSOperation/NSOperationQueue 面向?qū)ο蟮木€程技術(shù) GCD —— Grand Central Dispatch 是基于C語(yǔ)言的框架抒巢,可以充分利用多核,是蘋果推薦使用的多線程技術(shù) 以上這三種編程方式從上到下秉犹,抽象度層次是從低到高的蛉谜,抽象度越高的使用越簡(jiǎn)單稚晚,也是Apple最推薦使用的。但是就目前而言型诚,iOS的開(kāi)發(fā)者客燕,需要了解三種多線程技術(shù)的基本使用過(guò)程。因?yàn)楹芏嗫蚣芗夹g(shù)分別使用了不同多線程技術(shù)俺驶。 三種多線程技術(shù)的對(duì)比