1.什麼是多執行緒,表現方式有哪些,都有哪些優缺點
程序是程式的實體 程序是程式的一次執行,程序是執行緒的容器 執行緒是輕量級程序,是程式執行流的最小單位
多執行緒的概念:單個程式同時執行多個執行緒完成不同的任務,稱為多執行緒,是指從軟體或者硬體實現多個執行緒併發執行的技術
為什麼使用多執行緒:節約cpu時間,避免程式卡死 多執行緒技術是防止主線程堵塞和增加執行效率的最佳方法
怎樣實現多執行緒(表現方式):nsthread:是三種方法中輕量級,但需要管理執行緒的生命週期,同步,加鎖問題,會導致一定的效能開銷 nsoperationqueue:是基於oc實現的,以物件導向的方式封裝了需要執行的操作,不必關係執行緒同步,管理問題 grand central dispatch(gcd):提供一些新特性,執行庫來支援多核並行程式設計,他的關注點更高:如何在多個cpu提公升效率
多執行緒的優點:
1.)使用多執行緒可以把佔據時間長的程式的任務放到後台去執行
2.)程式的執行速度可能加快
3.)在一些等待的任務實現使用者輸入,檔案讀寫和網路收發資料,在這種情況下,可以釋放一些珍貴的資源如記憶體占用等
多執行緒的缺點:
1).如果有大量執行緒,會影響效能,因為作業系統需要在他們之間切換
2).通常塊模型資料需要在多個執行緒間共享,需要放置執行緒死鎖情況發生
執行緒開銷:
執行緒的執行需要占用記憶體資源和cpu,這就產生了記憶體和效能開銷。 記憶體開銷包括系統核心記憶體和應用程式記憶體。 執行緒要和記憶體進行互動,這個過程是非常耗時的,這是執行緒的效能開銷的主要原因。 建立乙個新執行緒的執行緒開銷明顯比建立乙個新程序開銷要小的多,這也是我們多執行緒開發的乙個重要原因。
2.執行緒開銷
執行緒建立的大概開銷:
1.)核心資料結構:大約1kb
2.)棧空間:主線程大約1m,第二線程大約512k(個人感覺從第二線程到之後執行緒空間不會遞減,依舊保持在512k。假設遞減,在第十執行緒之後占用的空間就太少了,幾乎不能完成任何任務)。
4.)另外開銷是程式內線程同步的開銷
3.多執行緒中的基本概念
並行:兩行**同時執行,這裡不是同乙個時間點執行,並行只是在任務執行的時間上有重疊 併發:在同一時間內,兩個或多個程式同時執行,這裡是指巨集觀意義上,實際總會有誤差,只有多核處理器才能做到微觀上的真正的同時 序列:與並行相對,幾個任務之間依次執行。即執行任務上沒有重疊。 同步和非同步:同步是指兩個人物之間的關係,乙個任務需要等待另乙個任務的反饋結果才能繼續執行。非同步與同步相反,乙個任務不需要等待其他任務的反饋也可以繼續執行。
4.總結
在學習多執行緒的過程中,主要有兩點能力需要我們去提公升,一是多執行緒工具的使用能力,二是多執行緒思維。要習慣使用多執行緒的思維去解決問題,但在培養多執行緒程式設計思想需要我們用更長的時間去習慣和完善。
iOS開發多執行緒篇 多執行緒簡單介紹
ios開發多執行緒篇 多執行緒簡單介紹 一 程序和執行緒 1.什麼是程序 程序是指在系統中正在執行的乙個應用程式 每個程序之間是獨立的,每個程序均執行在其專用且受保護的記憶體空間內 比如同時開啟qq xcode,系統就會分別啟動2個程序 通過 活動監視器 可以檢視mac系統中所開啟的程序 2.什麼是...
iOS開發 多執行緒篇 多執行緒介紹
一 程序和執行緒 1 什麼是程序 程序是指在系統中正在執行的乙個應用程式 每個程序之間是獨立的,每個程序均執行在其專用且受保護的記憶體空間內 比如同時開啟迅雷 xcode,系統就會分別啟動2個程序 通過 活動監視器 可以檢視mac系統中所開啟的程序 3 執行緒的序列 1個執行緒中任務的執行是序列的 ...
iOS中的多執行緒
nsobject 的 performselectorinbackground withobject 引數1 方法名稱,引數2 方法引數 void performselectoronmainthread sel aselector withobject id arg waituntildone boo...