카테고리 없음

(3) 비동기 프로그래밍

하참이 2024. 1. 14. 20:07

비동기 프로그래밍이란? 프로그램이 작업을 동기적으로 수행하는 대신, 작업이 완료될 때까지 기다리지 않고 다른 작업을 수행할 수 있도록 하는 프로그래밍 패러다임입니다.

 

쉽게 설명하면 프로그램의 작업 1의 수행 대기를 기다리는 동안 작업 2를 하도록 하는 프로그래밍 입니다.

 

예를 들면 저희가 가스레인지로 라면을 끓여먹는다고 생각해봅시다.

 

라면을 끓이는 순서는

 

과정 1 물을 끓인다.

과정 2 면과 스프를 넣고 기다린다.

과정 3 다 익으면 먹는다.

 

라고 합시다. 제가 라면을 끓이려고 과정 2를 수행중에 제 누나가 제게 라면을 끓여 달라 합니다. 이미 면과 스프를 넣고 기다리는 도중에 물을 추가하고 면과 스프를 넣으면 맛이 없어지므로 새로 끓이는 방법을 선택합니다. 다음 방법 중 어떤 방법이 가장 빠를까요? (빨리 끓이지 않으면 누나에게 맞게 되므로 가장 빠른 방법이 최고의 결과라 가정합시다.)

 

1. 과정 2, 3을 다 수행하고 새로 끓여준다.

2. 다른 냄비를 가져와 과정 1, 2, 3을 따로 수행한다.

 

당연히 2가 가장 빠른 방법입니다. 라면을 끓이는 동안은 기다리는 시간이 있고, 그 시간동안 다른 행동을 할 수 있음에도 쉬고 있는것은 비효율적이지요. 컴퓨터 역시 마찬가지 입니다.

 

다음 내용은 Node.js를 공부하기 위하여 알아둬야 할 부분이나 지금은 가볍게 읽고 넘어가신 뒤, 다음에 다시 읽어도 좋은 부분입니다. 

 

 

비동기 프로그래밍 방식에는 콜백, 프로미스, async/await 구문 3가지가 대표적입니다.

 

1. 콜백

 

프로그래밍에서 콜백(callback) 또는 콜백 함수(callback function)는 다른 코드의 인수로서 넘겨주는 실행가능한 코드를 말한다. 콜백을 넘겨받는 코드는 이 콜백을 필요에 따라 즉시 실행할 수도 있고, 아니면 나중에 실행할 수도 있다.

 

회사의 상사가 부재중일 때 부하직원이 거래처 A에게 연락을 받았습니다. 

 

"거래처 A에서 연락왔다고 전해주세요~"

 

부하직원의 일에는 상사에게 거래처 A에게 연락이 왔다고 전하는 일이 추가되었습니다.

 

그러자 거래처 B에서도 연락이 왔습니다.

 

"거래처 B에서 3시에 뵈러 가겠다고 전해주세요~"

 

부하직원의 일에는 상사에게 거래처 B가 3시에 방문한다는 것을 전하는 일이 추가되었습니다.

 

부재중인 상사가 복귀했습니다. (이벤트 발생!)

 

부하직원은 상사에게 지금까지 있었던 일들을 전부 보고합니다. 여기서 부하직원은 콜백함수의 역할을 한 것입니다.

 

 

2. 프로미스

3. async/await