Swift Async 함수 원리 - TIl52
async함수의 작동원리
Async 함수의 작동원리는 일반 함수와 다른점이 존재합니다.
일단 async 함수를 호출할 때, 쓰레드는 해당 함수를 완전히 제어하고 있다는 점은 동일합니다.
하지만, async함수는 await와 같은 함수가 작동될때 suspend(중단)되고 쓰레드의 제어를 포기합니다. 함수에게 쓰레드 제어가 다시 돌아가는 것 대신, 시스템에게 쓰레드 제어권을 제공합니다.
이는 결국 함수는 suspend되어있고, 시스템이 위임된 수많은 Task중 가장 중요한 작업을 시스템이 선별해서 우선적으로 처리하는 것입니다.
그리하여, 시스템이 suspended된 async함수를 재개를 결정하고, 해당 async 함수는 다시 쓰레드 제어권 가지고 일을 처리할 수 있는 것입니다. (이는 OS에서 스케쥴러와 유사합니다. 프로세스간에 우선순위가 존재하고 이를 순차적으로 처리하는 방식과 유사합니다. )
⇒ 결과적으로 async 함수는 처음에 일반적인 함수처럼 작동됩니다. 그러던 중 await와 같은 비동기 함수를 만나게 된다면 function은 suspend되고 해당 제어권을 “시스템”이 가지고 있습니다. 그러던중 시스템이 해당 작업을 우선적으로 처리하려고 결정하면, 작업이 재개됩니다.
댓글
