亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        IOS系統(tǒng)中不同多線程技術(shù)的研究和比較

        2014-04-29 22:02:01潘小龍
        中國新通信 2014年24期
        關(guān)鍵詞:多線程

        潘小龍

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

        【關(guān)鍵詞】 iOS系統(tǒng) 多線程 NSThread GCD NSOperation

        一、引言

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

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

        二、多線程概述

        2.1 進程與線程

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

        線程是進程中一個獨立的控制單元,一個進程中至少包含一條線程,即主線程,在程序運行時,可以將耗時的執(zhí)行路徑放在其他線程中執(zhí)行,線程不能被終結(jié),但是可以被暫?;蛘咝菝摺?/p>

        2.2 多線程概念

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

        2.3 iOS系統(tǒng)中的線程

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

        三、iOS系統(tǒng)中三種多線程技術(shù)研究

        3.1 NSThread多線程實現(xiàn)

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

        NSThread的初始化有靜態(tài)和動態(tài)兩種方法:

        靜態(tài)實現(xiàn)方法:

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

        動態(tài)實現(xiàn)方法:

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

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

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

        3.2 GCD多線程實現(xiàn)

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

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

        GCD中有四種主要隊列:

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

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

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

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

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

        3.3 NSOperation&NSOperationQueue多線程實現(xiàn)

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

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

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

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

        四、三種多線程技術(shù)的總結(jié)比較

        4.1 NSThread技術(shù)

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

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

        4.2 GCD技術(shù)

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

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

        4.3 NSOperation技術(shù)

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

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

        五、結(jié)語

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

        參 考 文 獻

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

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

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

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

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

        猜你喜歡
        多線程
        Java多線程同步機制在網(wǎng)絡(luò)售票系統(tǒng)中的應用
        科技資訊(2016年29期)2017-02-28 09:30:34
        Java并發(fā)工具包對并發(fā)編程的優(yōu)化
        基于多線程文件傳輸關(guān)鍵技術(shù)研究與實現(xiàn)
        網(wǎng)頁爬蟲技術(shù)的關(guān)鍵技術(shù)研究探索
        一種基于多線程的高速磁盤鏡像算法
        iOS并發(fā)程序設(shè)計中幾種方法的特點及使用技巧研究
        HTM L5 Web WOrker技術(shù)及應用研究
        電站鍋爐煤粉參數(shù)遠程監(jiān)控系統(tǒng)的軟件設(shè)計與實現(xiàn)
        一種高并發(fā)認證服務(wù)器的實現(xiàn)
        一種低開銷的并行重復數(shù)據(jù)刪除算法
        軟件導刊(2015年8期)2015-09-18 12:59:11
        天天夜碰日日摸日日澡| 国产精品女主播福利在线| 男女动态91白浆视频| 青青草手机视频免费在线播放| 青青青爽在线视频免费播放| 国产黄色三级一区二区三区四区| 男女调情视频在线观看| 白浆国产精品一区二区| www国产亚洲精品| 日本在线 | 中文| 国产精品中文久久久久久久 | 久久久久亚洲av无码专区导航| 亚洲综合久久成人a片| 亚洲人成网站在线观看播放| 欧美久久久久中文字幕| 国产69精品久久久久久久| 久久精品国产视频在热| 啪啪无码人妻丰满熟妇| 永久免费无码av在线网站 | 亚洲va欧美va人人爽夜夜嗨| 四虎无码精品a∨在线观看| 日韩人妻系列在线视频| 亚洲国产大胸一区二区三区| 国产亚洲综合另类色专区| 亚洲av综合色区无码另类小说| 亚洲av无码专区在线播放| 人禽伦免费交视频播放| 久久精品国产亚洲av电影| 中文字幕日本女优在线观看| 国产在线播放免费人成视频播放 | 粗大的内捧猛烈进出看视频| 国产欧美日韩综合精品二区| 国产成人久久蜜一区二区| 国产西西裸体一级黄色大片| 亚洲美女av二区在线观看| 99久久婷婷亚洲综合国产| 色窝窝无码一区二区三区| 亚洲a∨无码一区二区三区| 艳妇臀荡乳欲伦交换在线播放| 亚洲AV无码一区二区三区性色学| 亚洲精品国产精品av|