真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

iOS多線程開發(fā)之NSObject的多線程方法

  • NSObject的多線程方法

    創(chuàng)新互聯(lián)擁有網(wǎng)站維護技術和項目管理團隊,建立的售前、實施和售后服務體系,為客戶提供定制化的成都做網(wǎng)站、網(wǎng)站制作、網(wǎng)站維護、成都機柜租用解決方案。為客戶網(wǎng)站安全和日常運維提供整體管家式外包優(yōu)質(zhì)服務。我們的網(wǎng)站維護服務覆蓋集團企業(yè)、上市公司、外企網(wǎng)站、商城建設、政府網(wǎng)站等各類型客戶群體,為全球近千家企業(yè)提供全方位網(wǎng)站維護、服務器維護解決方案。

NSObject提供了一些多線程的方法,這些方法使用簡單而且量級輕,但無法對線程進行必要的控制,所以并不推薦使用。

開啟后臺執(zhí)行任務的方法

- (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg

在后臺線程中通知主線程執(zhí)行任務的方法

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

     

  • 多線程中的資源競爭

并發(fā)編程中許多問題的根源就是在多線程中訪問共享資源,資源可以是一個屬性、一個對象、網(wǎng)絡設備或者一個文件等

在多線程中共享的資源被稱作臨界資源,訪問了臨界資源的那一部分代碼被稱作臨界區(qū)

有臨界區(qū)出現(xiàn),就可能是一個潛在的沖突點,需要程序員精心去設計防止?jié)撛诘臎_突發(fā)生。

在多線程開發(fā)中,如果訪問了臨界資源(共享資源),由于線程運行切換的時機問題可能會導致得到的結(jié)果是錯誤的。

在爭奪臨界資源時,可以使用互斥鎖將臨界區(qū)鎖住,方法是使用@synchronized。

    iOS多線程開發(fā)之NSObject的多線程方法

還有一種保護屬性setter方法的原子操作是,在@property中制定atomic關鍵字,即在使用setter方法時,將其鎖住。

在iOS開發(fā)中,不建議使用@synchronized和atomic(代價非常大),也就是說盡量不要去搶奪資源

正是出于性能的考慮,UIKit框架的絕大部分類都不是線程安全的,所以蘋果才要求更新UI的操作一定要放到主線程去做

  • RunLoop機制

提供了一種異步執(zhí)行代碼的機制,不能并發(fā)執(zhí)行任務

在主隊列中,MainRunLoop直接配合任務的執(zhí)行,負責處理UI事件、計數(shù)器、以及其他內(nèi)核相關事件。

RunLoop的主要目的是保證線程不會被系統(tǒng)終止

工作特點:

     當有事件發(fā)生時,Run Loop會根據(jù)具體的事件類型通知應用程序做出響應

     當沒有事件發(fā)生時,Run Loop會進入休眠狀態(tài),從而達到省電的目的

     當事件再次發(fā)生時,Run Loop會被重新喚醒,處理事件

iOS程序主線程設置了RunLoop,其他線程沒有設置

    

iOS多線程開發(fā)之NSObject的多線程方法

iOS多線程開發(fā)之NSObject的多線程方法

     

   


文章名稱:iOS多線程開發(fā)之NSObject的多線程方法
轉(zhuǎn)載來源:http://weahome.cn/article/jpgdeo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部