乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      iOS多線程pthread與NSTread

       最初九月雪 2016-02-21

                     

       

        本文主要是講述iOS多線程pthread與NSTread,更多IOS技術知識,請登陸瘋狂軟件教育官網。

        簡介

        恰當?shù)氖褂枚嗑€程編程可以提供任務的執(zhí)行效率和系統(tǒng)資源的利用率

        多線程是為了提高資源利用率,和應用程序的響應速度,多個線程共享應用資源

        每個應用程序都有一個主線程,通常用來做UI界面刷新等

        比較耗時的任務如果放在主線程中,可能會造成主線程的堵塞,無法響應用戶操作,通常為耗時任務創(chuàng)建自己的線程,與主線程并發(fā)執(zhí)行

        多線程編程在一定程度上提高了系統(tǒng)資源的利用率和任務處理速度,但是線程不易過多,否則會引發(fā)以下問題。

        過多的線程會造成處理機的頻繁調度,線程調度需要消耗大量的系統(tǒng)資源。

        同一進程下的多個線程共享進程的資源,多個線程對資源的訪問需要實現(xiàn)同步,若線程過多會增加同步的難度,甚至無法實現(xiàn)。

        iOS開發(fā)中實現(xiàn)多線程的方式

        pthread

        跨平臺,適用于多種操作系統(tǒng),可移植性強

        是一套純C語言的通用API,且線程的生命周期需要程序員自己管理,使用難度較大,通常不使用

        NSThread

        基于OC語言的API,使得其簡單易用,面向對象操作

        線程的聲明周期由程序員管理,偶爾使用

        GCD

        基于C語言的API,充分利用設備的多核,旨在替換NSThread等線程技術

        線程的生命周期,由系統(tǒng)自動管理,經常使用

        NSOperation

        基于OC語言API,底層是GCD,增加了一些更加簡單易用的功能,使用更加面向對象

        線程生命周期由系統(tǒng)自動管理,經常使用

        pthread

        創(chuàng)建線程

        定義線程變量:

        pthread_t thread

        初始化線程變量:

        pthread_create(&thread, NULL, run, NULL)

        設置/獲取線程的并發(fā)執(zhí)行數(shù)

        設置并發(fā)執(zhí)行數(shù):

        int pthread_setconcurrency(int)

        獲取線程的并發(fā)執(zhí)行數(shù):

        int pthread_getconcurrency(void)

        執(zhí)行單次任務(通常用來設計單例模式)

        定義標記:

        pthread_once_t onceToken

        執(zhí)行單次任務:

        int pthread_once(pthread_once_t *, void (*)(void))

        將線程狀態(tài)轉化為unjoinable狀態(tài),確保資源的釋放

        int pthread_detach(pthread_t)

        退出線程

        void pthread_exit(void *)

        NSThread

        線程的生命周期操作

        創(chuàng)建線程的方法

        - (instancetype)initWithTarget:(id)target selector:(SEL)selector object:(id)argument,此方法創(chuàng)建

        的線程需要手動啟動

        + (void)detachNewThreadSelector:(SEL)selector toTarget:(id)target withObject:(id)argument,創(chuàng)建線

        程后自動啟動

        - (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg,隱式創(chuàng)建線程并啟動

        配置線程

        通過name屬性設置線程名字

        + (BOOL)setThreadPriority:(double)p設置線程的優(yōu)先級

        啟動線程

        - (void)start

        阻塞線程

        + (void)sleepUntilDate:(NSDate *)date

        + (void)sleepForTimeInterval:(NSTimeInterval)ti

        取消線程

        - (void)cancel,當前正在執(zhí)行的線程不會立刻停止

        強制退出線程

        + (void)exit

        NSThread的其他操作

        與主線程相關

        + (NSThread *)mainThread,獲取主線程

        + (BOOL)isMainThread,判斷當前線程是不是主線程

        與當前線程相關

        + (NSThread *)currentThread,獲取當前線程

        判斷線程的狀態(tài)

        \通過executing屬性判斷線程是否正在執(zhí)行

        \通過finished屬性判斷線程是否執(zhí)行完畢

        \通過cancelled屬性判斷線程是否被取消

        線程同步

        原因:多個線程訪問同一資源,很可能會引起數(shù)據(jù)錯亂和數(shù)據(jù)安全問題

        解決方案:使用互斥鎖來解決互斥資源訪問問題,iOS中通常使用@synchronized(鎖){}對臨界資源進行鎖定,通常使用self作為鎖

        注意:由于線程同步會消耗大量的資源,應盡量避免多個線程訪問同一資源,且通常將線程同步的邏輯交由服務器端實現(xiàn)

        線程之間的通信

        從子線程回到主線程

        - (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait

        modes:(NSArray *)array

        array指定runLoop的模式,若為空,則不執(zhí)行aselector

        方法的調用者即為aselector的調用者

        - (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait

        從一個線程到另一個線程(包括主線程)

        - (void)performSelector:(SEL)aSelector onThread:(NSThread )thr withObject:(id)arg waitUntilDone:

        (BOOL)wait modes:(NSArray )array

        - (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(id)arg

        waitUntilDone:(BOOL)wait

        也可以通過NSPort對象實現(xiàn)通信

        瘋狂軟件教育擁有最專業(yè)的瘋狂iOS學習線路圖,不僅證明瘋狂軟件iOS無與倫比的課程深度,也證明了瘋狂軟件iOS深厚的技術底蘊;同時也指引了iOS學習者的自學方向。iOS培訓采用全新的iMac蘋果一體機教學,瘋狂軟件教育重點培養(yǎng)學員理解軟件開發(fā)過程,形成良好的編碼習慣,能獨立完成iPhone手機和iPad平板電腦上App 開發(fā),積累一定的項目經驗,能滿足企業(yè)對iOS相關的人才需求,短期內成就高薪iOS開發(fā)人才。如需了解更多,可以咨詢QQ:544627560搶座熱線:020-28309358 咨詢QQ:707552864可登陸瘋狂軟件教育官網查詢。

       

        本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多