목록iOS (106)
大器晩成
이전 포스팅에서는 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는 일반적으로 다..
MultiThread란 하나의 스레드에서 이루어지던 작업을 다른 스레드에서도 작업을 할 수 있도록 분산 처리 하는 방법입니다.ex. 예를 들어 대표 혼자 일하는 카페에서 아르바이트생을 여러 명 뽑아 아르바이트생에게 일을 시키는 것입니다.- 하나의 Process 내에서 동시에 여러 작업을 수행. 즉, 여러 스레드가 동시에 실행되는 것을 의미- 동시에 여러 작업을 수행할 수 있기 때문에 빠르게 작업을 수행할 수 있지만, 먼저 끝날 지, 어떤 순서로 실행이 될지에 대한 순서를 알 수 없습니다. 멀티스레드는 코드와 데이터 힙 영역은 공유하나, 스택은 별도의 공간으로 가지고 있습니다. iOS에서 Multi ThreadGCD(Grand Central Dispatch)로 처리합니다.멀티 코어 프로세서 시스템에 대..