999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

IOS系統中不同多線程技術的研究和比較

2014-04-29 22:02:01潘小龍
中國新通信 2014年24期

潘小龍

【摘要】 隨著蘋果手機在智能手機市場取得的成功,iOS系統也在被廣大用戶熟識和喜愛,其內部架構設計也在被越來越多的技術開發人員所剖析、研究和運用。本文從多線程的相關概念出發,對iOS系統中主流的三種多線程實現技術進行了研究和分析,并通過分析比較,總結了三者之間的不同以及優缺點,將對相關系統開發起到借鑒意義。

【關鍵詞】 iOS系統 多線程 NSThread GCD NSOperation

一、引言

從2007年第一代iPhone推出至今歷經了六代的發展,蘋果手機已經成為智能手機市場舉足輕重的一員,除去時尚的外表,卓越的性能和絕佳的用戶體驗也是蘋果手機長盛不衰的重要原因,而這正離不開iOS系統中對多線程技術的設計和實現。

本文將以多線程概念為切入點,對比分析三種主要的多線程技術并分析各自優缺點,最后給出了在實際開發過程中應側重采用哪種技術的建議。

二、多線程概述

2.1 進程與線程

進程是指正在運行中的程序,它負責程序運行時的內存分配,每一個進程都有自己獨立的虛擬內存空間。

線程是進程中一個獨立的控制單元,一個進程中至少包含一條線程,即主線程,在程序運行時,可以將耗時的執行路徑放在其他線程中執行,線程不能被終結,但是可以被暫停或者休眠。

2.2 多線程概念

多線程(multithreading),指的是在軟件或硬件上讓多個線程實現并發執行的技術。一臺計算機具有多線程能力,再加上硬件的支持,因而能夠在同一時間執行多于一個線程,進而使整體處理性能得到提升。具有這種能力的處理器包括對稱多處理機、多核心處理器以及芯片級多處理或同時多線程處理器。

2.3 iOS系統中的線程

在iOS系統程序啟動中,創建好一個進程的同時,一個線程便開始運行,這個線程叫主線程。主線程在程序中的地位和其他線程不同,它是其他線程最終的父線程,且所有界面的顯示操作即UIKit的操作必須在主線程進行。iOS每個進程中可以開啟多個線程,由操作系統分配短暫的時間片輪流使用CPU,由于CPU對每個時間片的處理速度非常快,因此,從用戶使用角度來看,任務是同時執行的。

三、iOS系統中三種多線程技術研究

3.1 NSThread多線程實現

NSThread是iOS系統多線程實現技術里相對輕量級的,但也是使用起來需要開發人員自己維護的:需要自己管理thread的生命周期,線程之間的同步等等問題。當不同線程需要共享同一應用程序的部分內存空間時,它們擁有對數據相同的訪問權限,這就需要開發人員協調多個線程對同一數據的訪問,而這種協調操作會導致一定的性能開銷。

NSThread的初始化有靜態和動態兩種方法:

靜態實現方法:

+(void)detachNewThreadSelector:(SEL)selector toTarget:(id)target withObject:(id)argument;

動態實現方法:

-(id)initWithTarget:(id)target selector:(SEL)selector object:(id)argument;

其中,selector:線程執行的方法,這個selector最多只能接收一個參數;target:selector消息發送的對象;argument: 傳給selector的唯一參數,也可以是nil。

這兩種方式的區別是:前者在實現后就會立即創建一個線程來做事情;而后者雖然初始化完成,但是需要手動調用start啟動線程時才會真正去創建線程。

3.2 GCD多線程實現

GCD(Grand Central Dispatch),是基于C語言的底層API。GCD的基本概念就是dispatch queue。dispatch queue是一個對象,它可以接受任務,并將任務以先到先執行的順序來執行。dispatch queue可以是并發的或串行的。并發任務會像NSOperationQueue那樣基于系統負載來合適地并發進行,串行隊列同一時間只執行單一任務。

GCD的基本思想就是將操作放在隊列中去執行,要使用隊列,首先需要調用函數dispatch_queue_create進行創建,隊列負責調度任務執行所在的線程以及具體的執行時間。其次向一個隊列提交操作,通過調用dispatch_async函數,傳入一個隊列和一個操作。隊列會在輪到這個block執行時執行該操作。

GCD中有四種主要隊列:

串行隊列:同步操作不會新建線程,操作順序執行;異步操作會新建線程,操作順序執行。

并行隊列:同步操作不會新建線程,操作順序執行;異步操作會新建多個線程,操作無序執行,隊列前如果有其他任務,會等待前面的任務完成之后再執行。

全局隊列:全局隊列是系統的,直接GET即可,與并行隊列類似,但調試時,無法確認操作所在隊列。

主隊列:每一個應用程序都對應唯一的主隊列,直接GET即可,在多線程開發中,使用主隊列更新UI。

總之,隊列不是線程,也不表示對應的CPU,隊列就是負責調度的。多線程技術的目的,就是為了在一個CPU上實現快速切換。

3.3 NSOperation&NSOperationQueue多線程實現

NSOperation是GCD提供隊列模型的Cocoa抽象,是一套Objective-C的API,而NSOperationQueue(操作隊列)則在GCD之上實現了一些方便的功能,這些功能對開發者而言通常是最好最安全的選擇。

NSOperationQueue與GCD相同,都是依靠隊列來完成多線程操作,它其中有兩種不同類型的隊列:運行在主線程上的主隊列和在后臺執行的自定義隊列。NSOperation是抽象的父類,要進行隊列處理任務時都需要繼承實現其兩個子類:NSInvocationOperation和NSBlockOperation。

使用NSOperation實現多線程調度操作時,同樣需要定義隊列,在定義完成之后需要定義要進行的操作,最后把定義的操作加入到隊列中。

從本質上看, NSOperationQueue操作隊列的性能會比GCD略低,不過,大多數情況下這點負面影響可以忽略不計,操作隊列是并發編程的首選工具。

四、三種多線程技術的總結比較

4.1 NSThread技術

優點:相對于其他兩種技術,NSThread是最輕量級的,易于上手使用,適合iOS初學者使用。

缺點:不能控制線程的數量以及執行順序,開發人員需要自己管理thread的生命周期,線程之間的同步等問題,因此容易出現開發漏洞。

4.2 GCD技術

優點:基于C語言的底層API封裝,因此在進行多線程開發時可以傳block,也可以傳c函數指針,用于多核編程,方便高效。所有的多線程代碼集中在一起,便于維護,GCD中無需使用@autoreleasepool。

缺點:對C語言陌生的開發人員來說理解可能存在一定困難,而且GCD一種輕量級的方法來實現多線程,控制起來比較麻煩,比如取消和暫停一個線程,以及在線程中不同操作之間的依賴關系。

4.3 NSOperation技術

優點:基于GCD的Object-C的封裝,與iOS開發適應性更強,同時因其為面相對象封裝,所以在操作不同線程任務之間的依賴上更加方便,開發人員不需要關心線程管理,數據同步的事情,可以把精力放在自己需要執行的操作上。

缺點:因為是對GCD的再一次封裝,在性能上較GCD略低。

五、結語

通過以上對iOS系統中三種主要多線程技術的研究和比較,可以得出,在實際開發過程中,開發人員應盡量避免采用輕量級的NSThread,而主要采用GCD與NSOperation實現多線程操作,這樣可以把更多的精力放在應用程序自身的業務邏輯當中。另外,隨著iOS系統的持續更新,開發人員自身技術的不斷提高,相信在未來還會出現更好的多線程技術來推動iOS系統的發展。

參 考 文 獻

[1]駱斌,費翔林.多線程技術的研究與應用[J].計算機研究與發展, 2000,(04):407-412.

[2]薩丹.iPhone開發秘籍[M].北京:人民郵電出版社,2010:1.

[3]Gene Blacklin(美)著.岳紅 凌沖譯.iPhone&iPad高級編程[M].北京:清華大學出版社,2012:1.

[4]虞斌著.Ios軟件開發解密[M].北京:電子工業出版社,2011:1.

[5]喬納森(美)著.AppStore掘金[M].北京:人民郵電出版社,2010:1.

主站蜘蛛池模板: 亚洲国产精品无码久久一线| 国产精品网址你懂的| 精品偷拍一区二区| 欧美日韩亚洲国产主播第一区| 国产香蕉在线视频| 99精品影院| 免费不卡视频| 美女国产在线| 一级高清毛片免费a级高清毛片| 亚洲人成日本在线观看| 国产xxxxx免费视频| 亚洲婷婷丁香| 国产精品毛片一区视频播| 亚洲人成在线精品| 欧美啪啪网| 国产毛片一区| 欧美一级99在线观看国产| 欧美人与动牲交a欧美精品| 色综合久久久久8天国| 亚洲AV无码久久精品色欲| 伊人激情久久综合中文字幕| 久久大香香蕉国产免费网站| 国产色婷婷视频在线观看| 97se亚洲综合在线| 波多野结衣第一页| 77777亚洲午夜久久多人| 欧美亚洲一区二区三区在线| 激情亚洲天堂| 久久窝窝国产精品午夜看片| 国产高清在线精品一区二区三区 | 特级精品毛片免费观看| 亚洲精品视频免费观看| 手机在线国产精品| 热伊人99re久久精品最新地| 国产青青操| 国产亚洲男人的天堂在线观看| 无码一区二区波多野结衣播放搜索| 国产成人AV男人的天堂| 台湾AV国片精品女同性| 午夜福利视频一区| 国产美女在线免费观看| 国产免费福利网站| 国产精品一区在线麻豆| 动漫精品中文字幕无码| 日韩无码黄色| 天天躁夜夜躁狠狠躁躁88| 亚洲a级在线观看| 日韩精品毛片| 在线免费a视频| 91丨九色丨首页在线播放 | 伊人久久大香线蕉影院| 永久免费无码成人网站| 日韩a级片视频| 国产欧美精品午夜在线播放| 国产成人精品免费视频大全五级| 国产欧美日韩91| 国产免费黄| 国产成人永久免费视频| 欧美第一页在线| 欧美人人干| 亚洲AⅤ永久无码精品毛片| 无码网站免费观看| 怡春院欧美一区二区三区免费| 少妇露出福利视频| 老司国产精品视频91| 99热这里只有精品久久免费| 亚洲一欧洲中文字幕在线| 国产精品999在线| 国产亚洲视频在线观看| 国产精品专区第一页在线观看| 日韩一级二级三级| 亚洲电影天堂在线国语对白| 亚洲一区黄色| 亚洲精品片911| 久久精品免费国产大片| 国产精品黄色片| 亚洲欧美色中文字幕| 男女精品视频| av一区二区三区高清久久| 欧美三级视频在线播放| 亚洲男人天堂网址| 亚洲成人在线免费|