Pathway Link

Welcome to Unit 4: Connect to the internet

https://youtu.be/M9djOLAwnPc

Introduction to coroutines

Codelabs Link

비동기 프로그래밍

기존에 진행하던 Codelabs의 모든 코드는 대다수가 동기적으로 작동 하던 것이었음.

비동기적인 코드는 하나의 Task가 끝나기 전에 다른 Task를 별도로 진행 시켜, 프로그램의 실행 속도를 줄이는데에 목적이 있음.

한 눈에 보기에는 비동기적인 프로그래밍이 좋아보일 수 있으나, 비동기성 프로그래밍에는 여러 단점 사례가 있는데, 그건 뒤에서 계속...

Thread?

Thread를 설명 하기 전에 Thread의 상위(?) 개념인 Process에 대해서도 이야기를 해야 하는데,

1개의 Process는 최소 1개 이상의 Thread를 갖게 되는데, Process는 프로그램이 실행되는 단위라고 할 수 있으며, OS로 부터 시스템자원을 할당 받을 수 있는 단위라고 할 수 있음.

Thread 는 Process내에서 실행되는 흐름의 단위로, 위에서 언급한 할당 받은 시스템자원을 이용하여 실행하는 단위라고 할 수 있다.

비동기 프로그래밍에서 Thread를 이렇게나 길게 이야기 하는 이유는 비동기 프로그래밍의 가장 기본은 Thread를 활용해서 Task를 실행시키는 것인데, 이를 Multi Thread라고 한다.

Multi Thread?

위에서 설명한데로, 한 프로세스 내에서 여러 Thread 를 활용하는 방식을 Multi Thread 라고 하는데, Multi Thread에는 치명적인 단점이 있다.

일반적인 형태라면 1~50번 Thread가 있다고 하면, 1번부터 차례대로 진행되어 50번까지 순차대로 진행 될 것이라고 생각하지만, 애석하게도 Thread의 특성상 그렇지가 않습니다. 이런 예측할 수 없는 행동들과 Multi Thread는 특성상 많은 리소스가 필요하기 때문에, 충분한 설계와 최적화를 전제로 개발을 진행하여야 하며, 비동기 특성 상 특정 값이 도출되지 않은 상태에서 다음 코드가 진행 될 경우 문제가 발생할 여지가 많기 때문에 값에 대한 체크도 준비를 하여야 함.

Coroutines?