목록2025/01/20 (5)
大器晩成
QoS(Quality Of Service)의 약자로 DispatchQueue.global().async일 때 사용됩니다.Concurrent 방식의 비동기로 작업할 때에는 우선순위를 알 수 없기 때문에, 우선순위를 관리하기 위해서 QOS를 사용합니다.왜 다른 곳에서 사용할 수 없냐고 의문을 가지신다면 간다합니다.- 시리얼 동기 방식은 직렬 방식이기 때문에 순서를 알 수 있습니다.- 시리얼 비동기 방식은 메인 스레드가 먼저 작업이 수행되고 나서 다른 스레드가 실행되기 때문에 순서를 알 수 있습니다- 동시 동기 방식은 다른 큐에 동작들이 먼저 실행되고, 메인 스레드가 실행되기 때문에, 순서를 알 수 있습니다.- 하지만 동시 비동기 방식은 순서를 알 수 없습니다. QoS는 6가지로 구분됩니다.userIntera..
이전 포스팅에서는 Serial 상태에서 Sync와 Async를 알아봤습니다.이번 포스팅에서는 Concurrent Sync/Async를 정리해 보도록 하겠습니다. Concurrent Syncfunc ConcurrentSync() { print("START") print("첫번째 작업 시작") DispatchQueue.global().sync { for i in 1...10 { print(i, terminator: " ") } } DispatchQueue.global().sync { for i in 21...30 { print(i, terminator: " ") } } ..
이전 포스팅에서 QCD, Srial, Concurrent, sync, async 관련된 용어를 정리했으며, 실제 코드에서 동작이 어떻게 되는지 확인해보려고 합니다. 1. Serial Syncfunc SerialSync() { print("START") print("첫번째 작업 시작") for i in 1...10 { print(i, terminator: "") } print("\n두번째 작업 시작") for i in 11...20 { print(i, terminator: "") } print("\nEnd")}SerialSync()// ResultSTART첫번째 작업 시작1 2 3 4 5 6 7 8 9 10 두번째 작..
이전 포스팅에서 iOS는 멀티스레드를 GCD(Grand Central Dispatch)로 처리한다고 했습니다.GCD는 우리가 Queue에 작업을 보내면 그에 따른 스레드를 적절히 생성해서 분배해 줍니다.GCD에서 사용하는 Queue의 이름이 Dispatch Queue입니다.즉, Dispatch Queue에 작업을 추가하면, GCD는 작업에 맞는 스레드를 자동으로 생성해서 실행하고, 작업이 종료되면 스레드를 제거합니다. Dispatch는 보내다는 뜻을 가지고 있으며, Dispatch Queue는 큐에 보내다의 뜻을 가지고 있습니다.Dispatch Queue에 들어간 Task들은 GCD를 통해 각 스레드에 자동으로 할당됩니다. (어느 스레드에 무엇이 할당되는지는 알 수 없습니다) Queue는 일반적으로 다..