iOS, GCD(Grand Central Dispatch)1
🧐 ネットワークと非同期の操作を行うために、理解する必要があるGCDを見てみましょう.
DispatchQueueは、タスクを実行するFIFO Queueです.DispatchQueueは、シリアル(シーケンス)または同時(同時)でタスクを実行します.DispatchQueueにコミットされたアクションはThreadで実行されます.
現在のプロセスのデフォルトスレッドに関連付けられたDispatchキュー.シリアルキューを使用してMainThread操作を行います.
指定したサービス品質レベル(qos)を持つキューに戻ります.defaultはconcurrent queueです.
上部の重要性が高く、より高速に動作します.
最も緊迫した任務
アニメーション、イベント処理、アプリケーションなどのユーザーインタフェースの更新など、ユーザーと対話します.
今すぐユーザーが必要ですが、非同期で処理されています.
基本
ユーザーがアクティブに追跡していないタスク.やや重いタスク(ネットワーク、ネットワークタスク)
すぐに実行する必要のないタスク(位置の更新、閉じるなど)
いいえ、ありません.
customが作成したキューで、defaultはシリアルキューです.
シリアル-1つのThreadで処理
concurrent-複数のThreadの処理
sync-作業終了待ち
async-は仕事の完了を待たない.
Apple Developer Documentation
🍁 DispatchQueue
DispatchQueueは、タスクを実行するFIFO Queueです.DispatchQueueは、シリアル(シーケンス)または同時(同時)でタスクを実行します.DispatchQueueにコミットされたアクションはThreadで実行されます.
🍁 Main Queue
現在のプロセスのデフォルトスレッドに関連付けられたDispatchキュー.シリアルキューを使用してMainThread操作を行います.
DispatchQueue.main.async {
// UI 관련된 요소 처리
}
🍁 Global Queue
指定したサービス品質レベル(qos)を持つキューに戻ります.defaultはconcurrent queueです.
DispatchQueue.global().async {
// 글로벌 큐에서 비동기 작업 실행
}
DipatchQueue.global(qos: .background).async {
// qos를 설정하여 우선수위를 설정할 수 있습니다.
}
QoS上部の重要性が高く、より高速に動作します.
case
userInteractive:最も緊迫した任務
アニメーション、イベント処理、アプリケーションなどのユーザーインタフェースの更新など、ユーザーと対話します.
case
userInitiated:今すぐユーザーが必要ですが、非同期で処理されています.
case
default:基本
case
utility:ユーザーがアクティブに追跡していないタスク.やや重いタスク(ネットワーク、ネットワークタスク)
case
background:すぐに実行する必要のないタスク(位置の更新、閉じるなど)
case
unspecified:いいえ、ありません.
🍁 Custom Queue
customが作成したキューで、defaultはシリアルキューです.
let serialQueue = DispatchQueue(label: "serial", qos: .background)
let concQueue = DispatchQueue(label: "concurrent", qos: .background, attributes: .concurrent)
🍁 Serial? Concurrent?
シリアル-1つのThreadで処理
concurrent-複数のThreadの処理
🍁 同期?/Async(非同期)?
sync-作業終了待ち
async-は仕事の完了を待たない.
🍁 ex.swift
DispatchQueue.global().async {
guard let url = URL(string: "url") else { return } // Global 큐에서 비동기로 실행 (이미지를 가져오는동안 다른 작업을 실행가능하게 하기위해)
guard let data = try? Data(contentsOf: url) else { return }
let image = UIImage(data: data)
DispatchQueue.main.async {
imageView.image = image
} // 메인 큐로 전환하며 ui update
}
🧐(詳細については、以下の説明を参照してください!)Apple Developer Documentation
Reference
この問題について(iOS, GCD(Grand Central Dispatch)1), 我々は、より多くの情報をここで見つけました https://velog.io/@idoyoung/iOS-GCDGrand-Central-Dispatchテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol