4
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

同期、非同期処理について

同期処理と非同期処理の基本

同期処理とは

あるタスクを順番に実行する方式で、そのタスクが実行されている間は他のタスクが中断される

非同期処理とは

ある処理を実行する間に他の処理を実行できる

DispatchQueueとは

GCD(Grand Central Dispatch)の一部
DispatchQueueないにタスクを詰めると非同期で実行してくれる

DispatchQueue自体には、
Serial、Concurrent、mainの3種類がある。

DispatchQueue.main

OS側で作成済みなので呼び出すだけ。
1つだけ存在。
直列処理タイプ。
UI表示系タスクはここで行わないと動かない。

viewController.swift
let mainQueue = DispatchQueue.main

DispatchQueue.Global

OS側で作成済みなので呼び出すだけ。
5つ存在。(ただし、実質使えるのは4つ)
並列処理タイプ。
用途を指定して呼出し。

viewController.swift
// UserInteractiveタイプ
let grobalQueue = DispatchQueue.global(qos: .userInteractive)

sync

viewController.swift
dispatchQueue.sync {
    print("同期")
}

async

viewController.swift
dispatchQueue.async {
    print("非同期")
}
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
4
Help us understand the problem. What are the problem?