본문 바로가기
public void static main/Etc

비동기와 논블로킹

by 햄리뮤 2025. 1. 23.
반응형

논블로킹.........비동기............왜 생각이 안났을까...... 정리해본다.

비동기(Asynchronous)

  • 정의:
    • 작업이 시작된 후 결과를 기다리지 않고, 호출자가 다른 작업을 계속 수행할 수 있는 방식 이다.
    • 작업 완료는 콜백, Future, Promise 등을 통해 통보 받는다.
  • 특징:
    • 호출자가 작업의 완료 여부를 직접 기다리지 않는다.
    • 작업이 완료되었을 때만 응답을 받는다.
  • 예제:
    • 이메일 전송 요청 후 바로 다음 코드 실행, 실제 전송 완료 여부는 나중에 콜백으로 알림.

비동기의 동작 방법

비동기는 일반적으로 이벤트 루프나 스레드 풀을 사용하여 작동한다.

  • 작업 요청
    • 호출자가 비동기 작업을 요청한다.
    • 요청은 즉시 반환되며, 호출자는 작업 완료 여부와 관계 없이 다른 작업을 계속할 수 있다.
  • 작업 처리
    • 작업은 백그라운드에서 실행된다.
    • 예: 별도의 스레드나 이벤트 큐에서 실행 된다.
  • 작업 완료 통보
    • 작업 완료 시, 호출자에게 결과를 전달 한다.
      • 콜백(Callback): 작업이 완료되면 미리 지정한 함수를 호출 한다.
      • Future/Promise: 결과를 저장하는 객체를 통해 작업 완료 상태를 확인 한다.
      • Event Loop: 이벤트 기반으로 처리 결과를 전달 한다.
  • 결과 처리
    • 호출자는 완료된 작업 결과를 받아서 후속 작업을 진행 한다.

논블로킹(Non-blocking)

  • 정의:
    • 작업 요청 시 호출자가 즉시 반환받으며, 요청한 작업이 즉각적으로 완료될 필요가 없는 방식.
    • 호출자는 대기하지 않으며, 현재 상태를 확인하거나 다른 작업을 수행한다.
  • 특징:
    • 호출된 함수는 즉시 제어권을 반환 한다.
    • 작업이 완료되지 않았더라도 호출자는 대기하지 않고 다른 작업을 수행 한다.
  • 예제:
    • 파일 읽기 요청 시, 읽기 작업을 즉시 반환하고 나중에 완료 상태를 확인하거나 이벤트 루프로 결과를 처리 한다.

비동기와 논블로킹의 차이

특징 비동기(Asynchronous) 논블로킹(Non-blocking)
중심 개념 작업 완료 여부를 나중에 알림 호출자가 즉시 반환 받고, 대기하지 않음
작업 완료 방식 완료 후 콜백(Promise, Future로 알림) 완료 여부를 호출자와 별개로 비동기적으로 처리
초점 결과 전달 방식 호출 반환 방식
예제 이메일 전송 요청 후 콜백으로 결과 받기 파일 읽기 요청 후 작업 상태를 폴링

왜................................ 아무것도 기억이 안났을까 왤까 왜그랬을까

 

** 그냥 하루하루 개인 공부한 것을 끄적 거리는 공간입니다.

이곳 저곳에서 구글링한 것과 강의 들은 내용이 정리가 되었습니다.

그림들은 그림밑에 출처표시를 해놓았습니다.

문제가 될시 말씀해주시면 해당 부분은 삭제 하도록하겠습니다. **

반응형

댓글