https://velog.io/@raejoonee/프로세스와-스레드의-차이
https://jeonghwan-kim.github.io/2016/12/15/coroutine.html
process는 Heap을 사용하며, thread는 process안에서 stack을 사용한다.
동시성과 병렬성의 개념을 명확히!
Concurrency ( 동시성 )
interleaving, 다수의 task들에 대해서 각각을 쪼개어서 조금씩 빠르게 실행하여 전체로 보았을때는 동시에 실행되고 있는 것처럼 보이도록 실행하는 것.
Parallelism ( 병렬성 )
parallelizing, 다수의 task들이 한번에 수행되는 것
두 개념 모두 Concurrency를 보장하기 위한 기술이다.
Thread - Thread의 효율성은 OS의 몫이다.
task의 단위 = Thread
OS level에서의 작업이 빈번함
Blocking 발생시, thread자체의 block을 의미함.
하나의 task를 blocking하고 다른 task가 수행되기까지 기다려야한다는 것은,
하나의 thread의 사용을 중지하고 새로운 thread를 운영하는 것과 같은 의미이다.
Coroutine - Coroutine의 효율성은 프로그래머의 몫이다.
코루틴 개념 이해하기
c
const {spawnSync} = require('child_process');
보통, huge process들을 처리하기 위해서 worker thread가 사용된다. worker thread를 이용해서 데이터가 이동하는 것은 결함을 야기할 수 있다.
Collaborative multitasking를 통해 main thread를 sharing한다. (coroutine 개념, thread쪼개기)
⇒ Coroutine에 우선 순위를 두는 것! huge process는 후순위가 됨
⇒ Context switching은 일어나지 않음! main Thread만 사용