ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

์•ˆ๋…•ํ•˜์„ธ์š”?

๋„ˆ๊ตฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.

 

์ €๋ฒˆ ํฌ์ŠคํŒ…์— ์ด์–ด

GCD์˜ ์ข…๋ฅ˜ ๊ทธ๋ฆฌ๊ณ  ๊ทธ์— ๋”ฐ๋ฅธ ํŠน์„ฑ๋„ ๊ฐ™์ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!

 

 

DispatchQueue์˜ ์ข…๋ฅ˜๋Š” ํฌ๊ฒŒ

(global)main queue, global queue, custom queue๊ฐ€ ์žˆ๋‹ค.

 

ํ๋“ค์€ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ํŠน์„ฑ์ด ๋‹ค๋ฅด๊ธฐ๋•Œ๋ฌธ์—

์šฐ๋ฆฌ๊ฐ€ ๊ทธ ํŠน์„ฑ์— ๋งž๊ฒŒ task๋ฅผ ๋ฐฐ๋‹นํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

์ฐจ๋ก€๋กœ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

(global)main queue

์šฐ๋ฆฌ๊ฐ€ ํ‰์ƒ์‹œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ํ ์ž…๋‹ˆ๋‹ค!

๋ฐ”๋กœ main thread๊ฐ€ main queue์ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค!

 

main thread๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— 

thread๊ฐ€ 1๊ฐœ์ด๊ณ , ์—ฌ๋Ÿฌ thread๋กœ ์ผ์„ ๋‚˜๋ˆ„์–ด ์ค„ ์ˆ˜ ์—†๊ฒ ์ฃ ?

๊ทธ๋ž˜์„œ Serial ํŠน์„ฑ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

 

 

์ฝ”๋“œ๋กœ ์‚ฌ์šฉํ•  ๋•Œ์—๋Š”

DispatchQueue.main.async {
    // task 1
}

์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๊ฒ ๊ตฌ์š”

 

์šฐ๋ฆฌ๊ฐ€ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” print๋ฌธ์€ 

// DispatchQueue.main.sync {
    print("์ƒˆํ•ด ๋ณต ๋งŽ์ด ๋ฐ›์œผ์„ธ์š”")
// }

์ด๋Ÿฐ ์˜๋ฏธ๊ฐ€ ์ˆจ์–ด์ ธ ์žˆ์—ˆ๋˜๊ฒƒ์ด์ฃ ใ…Žใ…Ž

 

๋ฌผ๋ก  ์‹ค์ œ๋กœ main ํ์— sync ํŠน์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋ฉด 

์—๋Ÿฌ๊ฐ€ ๋‚˜๊ฒŒ ๋˜๋Š”๋ฐ ๊ทธ ์ด์œ ๋Š” ์ถ”ํ›„ ํฌ์ŠคํŒ…์—์„œ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค!!

 

 

global queue

global queue๋Š” ์ข…๋ฅ˜๊ฐ€ ์ด 6๊ฐ€์ง€์ด๊ณ , ๊ธฐ๋ณธ์„ค์ •์€ Concurrent์ž…๋‹ˆ๋‹ค!

์ข…๋ฅ˜๋Š” QoS๋ฅผ ํ†ตํ•ด ๋ถ„๋ฅ˜๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค!

 

QoS๋Š” ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ณต์‹๋ฌธ์„œ๋ฅผ ํ†ตํ•ด ์•Œ์•„๋ณด๋ฉด

QoS๋Š” Quality-of-service์ด๊ณ  ๋ฆฌ์†Œ์Šค๋ฅผ 

๋†’์€ ์šฐ์„ ์ˆœ์œ„ QoS๋ฅผ ๋ถ€์—ฌ ๋ฐ›์œผ๋ฉด task๋ฅผ ๋†’์€ ์ˆœ์œ„๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” thread๋ฅผ ๋ฐฐ์ •ํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ณ 

๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„ QoS๋ฅผ ๋ถ€์—ฌ ๋ฐ›์œผ๋ฉด task๋ฅผ ๋‚ฎ์€ ์ˆœ์œ„๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” thread์— ๋ฐฐ์ •ํ•˜์—ฌ ๋น„๊ต์  ์ฒœ์ฒœํžˆ ์ฒ˜๋ฆฌํ•˜๊ณ 

๋ฐฐํ„ฐ๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

 

๊ทธ๋Ÿผ QoS์˜ ์ข…๋ฅ˜๋„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!

์ด๋ ‡๊ฒŒ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹คใ…Žใ…Ž

 

 

์ฝ”๋“œ๋กœ๋„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•ด ๋ณผ๊ฒŒ์š”!

์•„๊นŒ ๊ณต์‹๋ฌธ์„œ๋กœ ๋ณด์‹œ๋ฉด QoS๊ฐ€ enum์œผ๋กœ ๋˜์–ด์žˆ์—ˆ์ฃ ?

let userInteractiveQueue = DispatchQueue.global(qos: .userInteractive)
let userInitiatedQueue = DispatchQueue.global(qos: .userInitiated)
let defaultQueue = DispatchQueue.global()  // ๋””ํดํŠธ ๊ธ€๋กœ๋ฒŒํ
let utilityQueue = DispatchQueue.global(qos: .utility)
let backgroundQueue = DispatchQueue.global(qos: .background)
let unspecifiedQueue = DispatchQueue.global(qos: .unspecified)

์š”๋Ÿฐ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค!

 

 

custom queue

custom queue๋Š” ๋ง ๊ทธ๋Œ€๋กœ 

์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•˜๋Š” ํ์ธ๋ฐ์š”

 

๋””ํดํŠธ ์„ค์ •์œผ๋กœ Serial ์„ฑ์งˆ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  concurrent๋กœ๋„ ์„ค์ •ํ•ด ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ฝ”๋“œ๋กœ ๋งŒ๋“œ๋Š” ๋ฒ•์„ ์•Œ์•„๋ณผ๊ฒŒ์š”!

let privateQueue = DispatchQueue(label: "neoguri1")

let prinvateConcurrentQueue = DispatchQueue(label: "neoguri2", attributes: .concurrent)

label์„ ์‚ฌ์šฉํ•ด์„œ ์ด๋ฆ„์„ ์ง€์–ด์ค„ ์ˆ˜ ์žˆ๊ณ 

attribute๋ฅผ ํ†ตํ•ด ํ์˜ ์„ฑ์งˆ์„ ์ •ํ•ด์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

QoS๋Š” OS์—์„œ ์ž๋™์œผ๋กœ ์ถ”๋ก ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค!

 

 

 

 

 

๊ธ€ ์ฝ์–ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹คใ…Žใ…Žใ…Ž

 

 

 

 

 

 

์ถœ์ฒ˜ : https://www.kodeco.com/5370-grand-central-dispatch-tutorial-for-swift-4-part-1-2

 

Grand Central Dispatch Tutorial for Swift 4: Part 1/2

Learn all about multithreading, dispatch queues, and concurrency in the first part of this Swift 4 tutorial on Grand Central Dispatch.

www.kodeco.com

์ถœ์ฒ˜ : https://developer.apple.com/documentation/dispatch/dispatchqos/qosclass

 

Apple Developer Documentation

 

developer.apple.com

์ถœ์ฒ˜ : https://www.inflearn.com/course/iOS-Concurrency-GCD-Operation/dashboard

 

iOS Concurrency(๋™์‹œ์„ฑ) ํ”„๋กœ๊ทธ๋ž˜๋ฐ, ๋™๊ธฐ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๊ทธ๋ฆฌ๊ณ  GCD/Operation - ๋””์ŠคํŒจ์น˜ํ์™€ ์˜คํผ๋ ˆ์ด์…˜

๋™์‹œ์„ฑ(Concurrency)ํ”„๋กœ๊ทธ๋ž˜๋ฐ - iOSํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ํ•„์š”ํ•œ ๋™๊ธฐ, ๋น„๋™๊ธฐ์˜ ๊ฐœ๋… ๋ฐ ๊ทธ๋ฅผ ํ™•์žฅํ•œ GCD ๋ฐ Operation์— ๊ด€ํ•œ ๋ชจ๋“  ๋‚ด์šฉ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค., - ๊ฐ•์˜ ์†Œ๊ฐœ | ์ธํ”„๋Ÿฐ...

www.inflearn.com

 

๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2026/03   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ