https://github.com/markruler/synchronous-blocking
Synchronous / Blocking
https://github.com/markruler/synchronous-blocking
Last synced: about 1 year ago
JSON representation
Synchronous / Blocking
- Host: GitHub
- URL: https://github.com/markruler/synchronous-blocking
- Owner: markruler
- Created: 2025-01-27T13:56:16.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-01-27T13:58:08.000Z (over 1 year ago)
- Last Synced: 2025-03-24T11:49:34.760Z (about 1 year ago)
- Language: Java
- Homepage:
- Size: 4.88 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Synchronous & Blocking
## 동기(Synchronous)와 비동기(Asynchronous)
호출된 함수의 작업 완료 여부를 함수가 체크하는가?
**동기(Synchronous)**
호출된 함수의 작업 완료 여부를 호출한 함수가 체크합니다.
예를 들어, 파일을 읽는 작업이 완료될 때까지 프로그램이 대기하는 경우가 이에 해당합니다.
**비동기(Asynchronous)**
호출된 함수의 작업 완료 여부를 신경 쓰지 않습니다.
별도의 프로세스 혹은 스레드에서 실행하고 완료하면 호출한 쪽에 리턴합니다.
예를 들어, 비동기 HTTP 요청을 보내고, 응답을 기다리는 동안 다른 작업을 수행하는 경우가 이에 해당합니다.
## 블로킹(Blocking)과 논블로킹(Non-Blocking)
호출된 함수가 리턴할 때까지 대기하는가? 아니면 제어권을 넘겨주고 다른 일을 할 수 있도록 하는가?
**블로킹(Blocking)**
호출된 함수가 작업이 완료될 때까지 제어권을 가지고, 해당 스레드가 대기합니다.
예를 들어, 파일을 읽는 동안 해당 스레드는 다른 작업을 수행할 수 없습니다.
이로 인해 프로그램의 성능이 저하될 수 있습니다.
**논블로킹(Non-Blocking)** 작업이 진행되는 동안 스레드가 대기하지 않고 다른 작업을 수행할 수 있습니다.
예를 들어, 파일을 읽는 동안 다른 작업을 계속 수행할 수 있으며, 파일 읽기가 완료되면 결과를 처리하는 방식입니다.
## 참조
- ChatGPT
- [Boost application performance using asynchronous I/O](https://developer.ibm.com/articles/l-async/) | IBM
- [Blocking-NonBlocking-Synchronous-Asynchronous](https://homoefficio.github.io/2017/02/19/Blocking-NonBlocking-Synchronous-Asynchronous/) | HomoEfficio
- 개발자 기술 면접 노트 | 이남희