동기(Sync), 비동기(Async), Blocking, Non Blocking 차이
2024. 8. 20. 18:58ㆍ공부
동기 & 비동기
: 처리해야 하는 작업들을 어떤 '흐름'으로 처리할 것인가에 대한 관점
동기
: A 함수가 B 함수를 호출할 때, B 함수의 결과를 A 함수가 처리하는 것.
B의 작업 완료 후 리턴을 기다리거나, 바로 리턴을 받더라도 미완료 상태라면 작업 완료 여부를 계속 확인하면서 신경 쓰는 것.
비동기
: A 함수가 B 함수를 호출할 때, B 함수의 결과를 B 함수가 처리하는 것.
A가 B를 호출할 때 콜백(callback) 함수를 함께 전달해서, B 함수의 작업이 완료되면 함께 보낸 콜백함수를 실행한다. A는 B의 완료 여부를 신경 쓰지 않는다.
Blocking & Non Blocking
: 처리해야 하는 작업의 전체적인 흐름을 막느냐 안 막느냐에 대한 관점, 제어권이 누구에게 있는지
Blocking
: A 함수가 B 함수를 호출 할 때, B 함수가 자신의 작업이 종료되기 전까지 A 함수에게 제어권을 돌려주지 않는 것.
자신의 작업을 진행하다가 다른 주체의 작업이 시작되면, 다른 작업이 끝날 때까지 기다렸다가 작업을 다시 시작하는 것.
Non Blocking
: A 함수가 B 함수를 호출할 때, B 함수가 제어권을 바로 A 함수에게 넘겨주면서, A 함수가 다른 일을 할 수 있도록 하는 것.
다른 주체의 작업에 관련없이 자신의 작업을 진행하는 것.
반응형
'공부' 카테고리의 다른 글
Kotlin 기초(변수, 자료형, 형변환, 배열, 함수, 조건문, 연산자, 반복문) (0) | 2024.11.07 |
---|---|
HTML, CSS, JS만 사용해서 Mbti 테스트 만들기 - ChatGPT, Claude, netlify, 카카오 애드핏 (12) | 2024.09.26 |
내가 자주 사용하는 k8s 명령어 (2) | 2024.08.28 |