91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

iOS多線程開發之NSObject的多線程方法

發布時間:2020-08-03 08:49:12 來源:網絡 閱讀:324 作者:ymanmeng123 欄目:移動開發
  • NSObject的多線程方法

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

開啟后臺執行任務的方法

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

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

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

     

  • 多線程中的資源競爭

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

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

有臨界區出現,就可能是一個潛在的沖突點,需要程序員精心去設計防止潛在的沖突發生。

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

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

    iOS多線程開發之NSObject的多線程方法

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

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

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


  • RunLoop機制

提供了一種異步執行代碼的機制,不能并發執行任務

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

RunLoop的主要目的是保證線程不會被系統終止

工作特點:

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

     當沒有事件發生時,Run Loop會進入休眠狀態,從而達到省電的目的

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

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

    

iOS多線程開發之NSObject的多線程方法

iOS多線程開發之NSObject的多線程方法

     

   


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

开鲁县| 永善县| 双鸭山市| 赤水市| 南投县| 揭西县| 乌兰县| 乐都县| 旬阳县| 淮安市| 镇平县| 莱芜市| 万州区| 神农架林区| 安岳县| 马山县| 重庆市| 新邵县| 高碑店市| 大荔县| 即墨市| 盐池县| 招远市| 南溪县| 泾阳县| 甘南县| 闽清县| 通榆县| 社旗县| 将乐县| 本溪市| 克山县| 页游| 特克斯县| 焉耆| 阳山县| 滨州市| 阜南县| 长阳| 新安县| 安泽县|