동기와 비동기
동기 sync
나는 일이 많아도 한가지씩 해
하나의 작업이 끝날 때까지 다음 작업을 하지못한다.
- 은행 직원은 고객의 업무 보는 도중 다른 고객의 일을 하지 않는다.
- 라면을 끓이려고 물을 올렸을 때 전화가 왔다. 하지만 라면 끓이기라는 작업이 끝나기 전까지는 전화를 받지 못한다.
비동기 async
나는 일이 많으면 함께 처리 해
작업 도중 다른 작업도 가능하다.
- 맥날 직원은 고객들의 주문을 받고 메뉴가 먼저 완성되는 순서대로 고객을 불러 제공한다.
- 라면을 끓이려고 물을 올렸을 때 전화가 왔다. 전화를 받아서 대화를 한다.
직렬과 동시
직렬 serial
내 직원은 한명이야
하나의 쓰레드로만 작업을 하는 방식
동시 concurrent or parallel
내 직원은 여러명이야
여러개의 쓰레드로 작업을 할당해 분산처리를 하는 방식
그래서?
동기 / 비동기는 하나의 쓰레드 내에서의 동작 방식이다.
혼자서 한가지씩 작업을 한다 -> 직렬, 동기
(병원에 한명뿐인 간호사가 주사 놓기)
혼자서 여러가지 일을 함께 한다 -> 직렬, 비동기
(TV보며 밥먹기)
여럿이서 각각 한가지씩 작업을 한다 -> 동시, 동기
(은행 창구 직원들이 고객 업무 처리하기)
여럿이서 여러가지 일을 함께 한다 -> 동시, 비동기
(카페 직원들이 주문 받고 메뉴를 제작하고 제공하기)
하드웨어적 쓰레드와 소프트웨어적 쓰레드
물리적인 코어 및 쓰레드가 1개라도 언어에서는 쓰레드를 수십개를 만들 수 있다.
참고 자료
https://velog.io/@kkang/%EB%8F%99%EA%B8%B0%EC%99%80-%EB%B9%84%EB%8F%99%EA%B8%B0-%EC%A7%81%EB%A0%AC%ED%81%90%EA%B3%BC-%EB%8F%99%EC%8B%9C%ED%81%90
https://ivdevlog.tistory.com/m/3