🌟 Coroutine 이해하기

헷갈릴 수 있는 concepts

https://velog.io/@raejoonee/프로세스와-스레드의-차이

https://jeonghwan-kim.github.io/2016/12/15/coroutine.html

Process & Thread

process는 Heap을 사용하며, thread는 process안에서 stack을 사용한다.

스크린샷 2021-11-17 오후 5.26.26.png

Concurrency & Parallelism

동시성과 병렬성의 개념을 명확히!

Concurrency ( 동시성 )

interleaving, 다수의 task들에 대해서 각각을 쪼개어서 조금씩 빠르게 실행하여 전체로 보았을때는 동시에 실행되고 있는 것처럼 보이도록 실행하는 것.

스크린샷 2021-11-17 오후 5.28.40.png

Parallelism ( 병렬성 )

parallelizing, 다수의 task들이 한번에 수행되는 것

스크린샷 2021-11-17 오후 5.30.11.png

Thread & Coroutine

두 개념 모두 Concurrency를 보장하기 위한 기술이다.

Thread - Thread의 효율성은 OS의 몫이다.

스크린샷 2021-11-17 오후 5.45.59.png

Coroutine - Coroutine의 효율성은 프로그래머의 몫이다.

Coroutine, Thread 와의 차이와 그 특징

코루틴 개념 이해하기

c

const {spawnSync} = require('child_process');

JS에서의 Coroutine

https://brunch.co.kr/@kd4/155



☄️ JS-coroutine에 관하여,

3가지 핵심 Functionality

Process in parallel

보통, huge process들을 처리하기 위해서 worker thread가 사용된다. worker thread를 이용해서 데이터가 이동하는 것은 결함을 야기할 수 있다.

js-coroutine의 context switching 대안책

Collaborative multitasking를 통해 main thread를 sharing한다. (coroutine 개념, thread쪼개기)

Coroutine에 우선 순위를 두는 것! huge process는 후순위가 됨

⇒ Context switching은 일어나지 않음! main Thread만 사용

Imperative Animation (명령형 animation)