082317 원님의 말씀

삼촌
삼촌
Aug 23, 2017 · 2 min read

OS는 thread를 관리한다. thread는 생겼다 없어졌다 하는 그런 가상의 것이다. Swift는 고수준 언어로서 개발자가 직접 thread를 관리함으로써 생기는 위험을 줄이기 위해 queue라는 가상의 구조를 사용한다. 큐는 복수의 task의 시작 순서를 보장한다. 큐의 qos 우선순위에 따라서 OS는 thread를 어떻게 관리할 것인지를 결정한다

개발자가 동시에 복수의 task를 처리하고 싶을 때 큐를 만들어서 복수의 task 를 어떻게 처리할 것인지를 결정한다.

serial queue의 경우 복수의 task를 처리할 때 task의 완료순서를 보장하는 방식이며, concurernt queue의 경우 복수의 task를 처리할 때 완료순서를 보장하지 않는다.

sync 와 async 는 task를 처리할 때 현재의 thread 를 차단할 것이지 결정하는 방식이다.

sync 처리방식은 task가 완료될 때까지 현재의 thread를 차단하고, async 처리방식은 task를 처리를 다른 thread에 맡기고 현재의 thread를 계속 유지하다가 task가 완료되어 completion handler가 현재의 thread에게 뭔가를 하라고 알려주는 그런 방식

즉, 큐와 thread는 전혀 다른 개념이다.

큐랑 스레드랑 완전 다른 개념인 건 맞죠

근데 serial 큐에 넣어놓으면 하나의 스레드에 디스패치 시키는 걸 보장하는 거죠

큐는 os가 보장하는 어떤 대기열, 스레드는 프로세스가 생성하는 ‘뭔가’

)
    삼촌

    Written by

    삼촌

    초보 개발자