반응형
논블로킹.........비동기............왜 생각이 안났을까...... 정리해본다.
비동기(Asynchronous)
- 정의:
- 작업이 시작된 후 결과를 기다리지 않고, 호출자가 다른 작업을 계속 수행할 수 있는 방식 이다.
- 작업 완료는 콜백, Future, Promise 등을 통해 통보 받는다.
- 특징:
- 호출자가 작업의 완료 여부를 직접 기다리지 않는다.
- 작업이 완료되었을 때만 응답을 받는다.
- 예제:
- 이메일 전송 요청 후 바로 다음 코드 실행, 실제 전송 완료 여부는 나중에 콜백으로 알림.
비동기의 동작 방법
비동기는 일반적으로 이벤트 루프나 스레드 풀을 사용하여 작동한다.
- 작업 요청
- 호출자가 비동기 작업을 요청한다.
- 요청은 즉시 반환되며, 호출자는 작업 완료 여부와 관계 없이 다른 작업을 계속할 수 있다.
- 작업 처리
- 작업은 백그라운드에서 실행된다.
- 예: 별도의 스레드나 이벤트 큐에서 실행 된다.
- 작업 완료 통보
- 작업 완료 시, 호출자에게 결과를 전달 한다.
- 콜백(Callback): 작업이 완료되면 미리 지정한 함수를 호출 한다.
- Future/Promise: 결과를 저장하는 객체를 통해 작업 완료 상태를 확인 한다.
- Event Loop: 이벤트 기반으로 처리 결과를 전달 한다.
- 작업 완료 시, 호출자에게 결과를 전달 한다.
- 결과 처리
- 호출자는 완료된 작업 결과를 받아서 후속 작업을 진행 한다.
논블로킹(Non-blocking)
- 정의:
- 작업 요청 시 호출자가 즉시 반환받으며, 요청한 작업이 즉각적으로 완료될 필요가 없는 방식.
- 호출자는 대기하지 않으며, 현재 상태를 확인하거나 다른 작업을 수행한다.
- 특징:
- 호출된 함수는 즉시 제어권을 반환 한다.
- 작업이 완료되지 않았더라도 호출자는 대기하지 않고 다른 작업을 수행 한다.
- 예제:
- 파일 읽기 요청 시, 읽기 작업을 즉시 반환하고 나중에 완료 상태를 확인하거나 이벤트 루프로 결과를 처리 한다.
비동기와 논블로킹의 차이
특징 | 비동기(Asynchronous) | 논블로킹(Non-blocking) |
중심 개념 | 작업 완료 여부를 나중에 알림 | 호출자가 즉시 반환 받고, 대기하지 않음 |
작업 완료 방식 | 완료 후 콜백(Promise, Future로 알림) | 완료 여부를 호출자와 별개로 비동기적으로 처리 |
초점 | 결과 전달 방식 | 호출 반환 방식 |
예제 | 이메일 전송 요청 후 콜백으로 결과 받기 | 파일 읽기 요청 후 작업 상태를 폴링 |
왜................................ 아무것도 기억이 안났을까 왤까 왜그랬을까
** 그냥 하루하루 개인 공부한 것을 끄적 거리는 공간입니다.
이곳 저곳에서 구글링한 것과 강의 들은 내용이 정리가 되었습니다.
그림들은 그림밑에 출처표시를 해놓았습니다.
문제가 될시 말씀해주시면 해당 부분은 삭제 하도록하겠습니다. **
반응형
'public void static main > Etc' 카테고리의 다른 글
[Kafka] 카프카를 공부해보자 (1) | 2025.01.24 |
---|---|
[HTTP] Stateless/Stateful 뭘 사용해야 할까? (0) | 2025.01.07 |
[RAID] 레이드란 무엇인가! (0) | 2022.12.19 |
[WEB] 동기 & 비동기 (0) | 2022.10.14 |
[OS] 프로그램과 프로세스 (0) | 2022.02.21 |
댓글