【讀書筆記】iOS-“一心多用”利用多線程提升性能

来源:https://www.cnblogs.com/yang-guang-girl/archive/2018/03/02/8491412.html
-Advertisement-
Play Games

iPhone將具有支持不同類型多線程API的能力,這些API包括:POSIX線程,NSObject,NSThread和NSOperation. iPhone操作系統是一個真正的搶占式,多任務操作系統,允許開發人員創建多線程應用。 拿著一個iPhone時,我手中實際是 一個配備Unix操作系統的搶占式 ...


iPhone將具有支持不同類型多線程API的能力,這些API包括:POSIX線程,NSObject,NSThread和NSOperation.

 

iPhone操作系統是一個真正的搶占式,多任務操作系統,允許開發人員創建多線程應用。

 

拿著一個iPhone時,我手中實際是 一個配備Unix操作系統的搶占式,多任務電腦,它有一個圖形界面,並提供GPS功以,Wi-Fi以及大量內置的函數庫,另外這也是一個手機 ,這實在令人驚嘆,真是了不起!

 

線程或執行線程是電腦程式中一個分支,會引發兩個或多個併發運行的任務。線程包含在電腦程式中

 

基本來說,如果應用在完成一個或多個任務的同時還需要保證對用戶的響應性,就應當對應用使用多線程。

 

多線程是指,操作系統控制多個進程共用CPU時間並等待它們的時間片到來,以達成多個任務同時運行的效果。操作系統會讓CPU為一個進程服務幾毫秒,然後要求這個進程進入休眠狀態,而讓CPU為其他進程提供服務。

 

進程就是正在運行的應用

 

如果多個線程試圖訪問資源並同時完成讀和寫操作,資源的值可能不正確,而且很可能被破壞。例如,假設兩個線程分別表示一個游戲應用中的兩個角色,且這兩個線程同時運行。同步是指保持數據一致或者維護線程之間數據的完整性。如果一個線程試圖讀取gameScroe變數,而另一個線程試圖更新gameScore變數,gameScore變數就可能不正確。

 

臨界區是一段代碼,可以保護共用資源,防止多個線程同時訪問這段代碼而破壞共用資源。

 

存在某些條件時,線程訪問資源的時間順序可能導致出乎意料的結果。這種情況通常稱為一種競態條件。

 

在多線程中互斥鎖用來避免同時使用一個公共資源。很多著名的競態條件例子就曾導致災難性的後果。

 

兩個或多個線程永遠阻塞,互相等待對方釋放各自獨特持有的資源時,則會出現線程應用中另一個常見的陷阱。這稱為一個死鎖條件。

 

啟動一個線程時,實際上會脫離Cocoa框架。此時,要由我們來負責清理記憶體池。如果沒有這樣做,就會出現記憶體泄漏。

 

運行迴圈,會處理你用來調度工作的事件差協調到來事件的接收,其作用是在有工作時保持線程的繁忙狀態,而在沒有任何工作時置線程為休眠模式。要瞭解有關運行迴圈的更多信息。

 

 

 

 

參考資料:《精彩iPhone炫酷開發-七位一線高手的編程和設計範例》

 
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • imp YG_XSOA_NEW/[email protected]/XSSJZX file=d:\daochu.dmp full=y (導入) exp YG_XSOA_NEW/[email protected]/XSSJZX file=d:\daochu.dmp owner=YG_XSOA_NEW ...
  • 跟蹤標記:834 功能: 在64位的windows環境下,為SQL Server開啟這個跟蹤標記,那麼SQL Server 會使用大頁(Large pages)為記憶體緩衝區(buffer pool)分配記憶體,從而可以提高CPU轉換檢測緩衝區(TLB: Translation Lookaside Bu ...
  • java ElasticSearch訪問控制上存在以下多種接入實現方式: 1)基於ES JAVA API實現;2)基於ES HTTP API實現;3)基於Spring Data ES實現; 那麼問題來了,到底哪種方式最好,靈活性、擴展性和完備性等更勝一籌呢? 為了找到最權威的答案,搜索了各大權威技術 ...
  • 在Windows Server 2012平臺使用命令啟動監聽服務時遇到了TNS-12560 & TNS-00530錯誤。 C:\Users>lsnrctl start GEW_LISTENER LSNRCTL for 32-bit Windows: Version 11.2.0.1.0 - Prod... ...
  • 在資料庫領域,回顧2017這一年,精彩紛呈,熱點不斷,而且不乏標誌性的事件發生,如Oracle提出的自治資料庫這樣的概念,把資料庫技術帶入一個新世界。再如NDBC(中國電腦學會資料庫學術年會)慶祝四十華誕、阿裡入股MariaDB、國內類Aurora架構的產品爭相發佈、資料庫事務處理等核心技術的原創... ...
  • 透明網關概念 ORACLE透明網關(Oracle Transparent Gateway)可以解決ORACLE資料庫和非ORACLE資料庫交互數據的需求。在一個異構的分散式環境中,通過ORACLE透明網關可以訪問其他類型資料庫,例如DB2,SQL Server、Sybase....。這個類似於SQL... ...
  • 如果想在一個已經建好的表中添加一列,可以用以下代碼: alter table 表名 add column 列名 varchar(20) not null; 這條語句會向已有的表中加入一列,這一列在表的最後一列位置。如果我們希望添加在指定的一列,可以用: alter table 表名 add colu ...
  • 去年買了一本講SqlServer的書,這幾天把這本塵封已久的書拿了出來,準備按照上面的目錄擼一遍。 簡單的看了下這本書的目錄結構,一共是九個部分 資料庫安裝 建立資料庫和處理數據 高級T SQL T SQL編程 企業數據管理 SQL Server安全 監視和審計 性能調整和優化 商業智能 資料庫文件 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...