목록동시성 (2)
슈프림 블로그
동기(Sync) vs 비동기(Async) 대기열을 어떤 방식으로 처리할지 정하는 것이다. 비동기 메인스레드에서 다른 스레드에게 작업을 시작 시키고 작업이 끝날때까지 기다리지 않는다. 메인스레드가 바로 다른 작업을 시작할 수 있게 된다. DispatchQueue.global().async {...} 동기 메인스레드에서 다른 스레드에게 작업을 시키고, 끝날때까지 기다린다. 해당 작업이 끝날 때 까지 메인 스레드는 다른 작업 하지 않고 Block상태를 유지한다. 영상 싱크가 맞는다?? 영상 로딩이 될 때 까지 음성도 기다렸다가 시점이 맞아야 비로소 재생됨을 떠올리면 좋을 것이다. DispatchQueue.global().sync {...} + 다른 스레드로 작업을 보내는 개념이긴 하지만, 작업 끝날 때 까지 ..
쓰레드 Thread 동시성 프로그래밍에 대해 공부하기 전에 쓰레드(Thread)에 대해 먼저 알아야 한다. 쓰레드는 간단하게 말하면 "프로그램이 처리해야 할 작업을 하는 녀석"들을 말한다. 쓰레드가 여러개가 있으면 여러 작업을 동시에 처리할 수 있게 된다. 따라서 시간이 오래 걸리는 작업이 여러개 있을 때, 쓰레드 하나에 모든 일을 맡기는 것 보다는 여러개의 쓰레드에 분산 처리를 시키는 것이 효율적이다. 그렇다면 작업을 어떻게 다른 쓰레드로 분산시켜 동시에 실행되도록 할까? 이것이 동시성 프로그래밍의 목적이다. iOS의 동시성 프로그래밍 iOS의 경우, 프로그래머가 직접 스레드를 관리하지 않는다. 작업을 "대기행렬"에 넣어주기만 하면, 적절한 스레드로 분산을 시키는 것은 OS가 알아서 처리해준다! 이렇게..