Blocking
- 작업 A가 작업 B를 호출하였을 때 작업 B가 완료될 떄 까지 작업 A는 다음 작업을 수행하지 못하는 방식을 말합니다.
Non-Blocking
- 작업 A가 작업 B를 호출하였을 때 작업 A는 바로 다음 작업을 수행하는 방식을 말합니다.
동기(Synchronous) 프로그래밍이란?
- 여러 테스크(Task)를 순차적으로 실행하는 방식을 동기(Synchronous) 프로그래밍이라 합니다.
동기 프로그래밍 예시
- 동기 프로그래밍은 위 그림과 같이 앞서 수행된 하나의 작업이 완료된 후에 다음 작업을 수행하는 방식을 말합니다.
비동기(Asynchronous) 프로그래밍이란?
- 여러 테스크(Task)들을 독립적으로 실행하는 방식을 비동기(Asyncrhonous) 프로그래밍이라 합니다.
비동기 프로그래밍 예시 1
- 독립적인 각 작업을 두 개의 쓰레드가 나누어 실행하는 방식의 비동기 프로그래밍입니다.
비동기 프로그래밍 예시 2
- 기존 두 개의 쓰레드보다 더 많은 쓰레드를 생성하여 작업을 처리하는 비동기 프로그래밍입니다.
비동기 프로그래밍 예시 3
- 햇반 데우기는 것은 전자 레인지에 넣고 국을 끓이는 것은 가스 레인지에 올려놔서 처리하는 것과 같이 작업을 다른 담당자에게 위임 하는 방식으로 비동기 프로그래밍이 가능합니다.
비동기 프로그래밍 예시 4
- 여러 개의 쓰레드와 Non-Block I/O를 통한 비동기 프로그래밍이 가능합니다.
비동기 프로그래밍 != 멀티 쓰레드 프로그래밍
- 비동기 프로그래밍과 멀티 쓰레드 프로그래밍은 서로 다른 개념입니다. 비동기 프로그래밍은 여러 작업을 동시에 실행하는 프로그래밍 방법론이며, 멀티 쓰레드 프로그래밍은 비동기 프로그래밍의 한 종류입니다.
동기/비동기와 블락/넌블락의 차이점
- 블락과 넌블락은 특정 함수가 다른 함수를 호출하였을 때 호출한 함수가 작업 완료 여부를 기다릴지 말지를 의미하는 것이지만, 동기와 비동기는 여러 작업들의 순서를 지켜야될 경우 동기로 처리하거나 또는 지키지 않아도 돼서 넌블락 또는 멀티 쓰레드를 활용해서 비동기적으로 프로그래밍 하는 것을 말합니다.
'개발 상식' 카테고리의 다른 글
객체 지향 프로그래밍(Object-oriented programming, OOP)이란? (0) | 2023.02.24 |
---|---|
OAuth( Open Authorization )란? (0) | 2023.02.24 |
빅 엔디안( Big-Endian ) & 리틀 엔디안( Little-Endian ) (0) | 2023.01.27 |
정규 표현식( regular expression ) 간단한 사용법 (0) | 2023.01.06 |
URL 문법 (0) | 2022.12.26 |