- Swift 2 iOS 開發
- iOS 開發 - 首頁
- iOS 開發 - Xcode IDE
- iOS 開發 - 第一個應用程式
- 使應用程式具有互動性
- iOS 開發 - Swift Playground
- 使用 Swift 建立應用程式
- iOS 開發 - 高階 iOS
- iOS 開發 - 整合地圖
- iOS 開發 - 自動佈局
- iOS 開發 - 動畫
- 訪問 Web 服務
- 併發控制
- 面試問題
- iOS 開發有用資源
- iOS 開發 - 快速指南
- iOS 開發 - 資源
- iOS 開發 - 討論
併發控制
併發是一種同時執行多個操作的方式。在應用程式中,併發指的是多個任務同時/併發執行。
併發可以使您的應用程式更快、更簡潔,併為使用者提供更好的體驗。許多開發人員認為使用多執行緒很困難,但是像NSOperation和Dispatch Queues這樣的 API 使在應用程式中使用併發和多執行緒變得容易。
Grand Central Dispatch
GCD 是最常用的 API,用於管理併發程式碼並在系統級別異步執行操作。GCD 提供並使用任務佇列。這些佇列是使用 FIFO 術語的資料結構,即佇列中第一個任務將首先執行,佇列中最後一個任務將最後執行。
例如 - 假設一個電影票預訂隊伍,如果你是最後一個人,你將最後拿到票,如果有人在你之後來,他將在你之後拿到票。
排程佇列
排程佇列是在應用程式中非同步併發執行任務的簡便方法。佇列有兩種型別:
序列佇列 - 它們以序列方式儲存任務,並一次執行一個任務。
併發佇列 - 它們以序列方式儲存任務,並一次執行一個任務。
一些用於建立或獲取佇列的函式有:
dispatch_queue_create // create a serial or concurrent queue dispatch_queue_get_label // get the label of a given queue dispatch_get_main_queue // get the one and only main queue dispatch_get_global_queue // get one of the global concurrent queues
向佇列新增任務
有兩種型別的函式可以幫助向佇列新增任務。他們是:
同步函式 -
dispatch_once - 僅在應用程式生命週期結束後提交一次任務。
dispatch_sync - 將任務提交到佇列,並在任務完成後返回。
非同步函式 -
Dispatch_async - 將提交任務並返回。
Dispatch_after - 立即返回,但延遲特定時間。
Dispatch_async - 立即返回,但任務被提交多次。
示例程式碼
以下是向佇列新增任務的示例程式碼。
dispatch_async(dispatch_get_main_queue(), update_block); // add update_block to main queue dispatch_apply(i, some_queue, work_block) // add work_block to some_queue i times dispatch_sync(background_queue, blocking_block) // add blocking block to background queue and wait for completion
使用佇列的一般示例
以下程式碼是使用佇列的示例。
dispatch_async(background_queue, ^ {
// Perform code that takes long time, here.
Dispatch_async(dispatch_get_main_queue(), ^ {
//Some other task, generally UI.
});
});
關於併發控制,我們僅介紹這些內容,因為在您成為中級 iOS 開發人員之前,這些資訊就足夠了。
繼續練習您學到的概念,並嘗試根據您的需求對其進行修改和整合。
廣告