선릉역 1번 출구
blocking and nonblocking / Synchronous and Asynchronous 본문
블록킹과 논블록킹 그리고 동기와 비동기는 직접적인 관련은 없음
동기와 비동기: 프로세스의 수행 순서 보장에 대한 매커니즘
블록킹과 논블록킹: 프로세스의 유휴 상태에 대한 개념
제어권: 자신의 코드를 실행할 권리로 제어권을 가진 함수는 자신의 코드를 끝까지 실행한 후, 자신을 호출한 함수에게 돌려줌
결과값을 기다림: A 함수에서 B 함수를 호출했을 때, A 함수가 B 함수의 결과값을 기다리느냐의 여부를 의미
동기와 비동기
- 처리해야 할 작업들을 어떤 흐름으로 처리할 것인가에 대한 관점으로, 호출되는 함수의 작업 완료 여부를 신경쓰느냐에 따라 함수 실행/리턴 순차적인 흐름을 따르느냐와 안따르느냐의 관심사임
동기: 함수 A가 함수 B를 호출했을 때, 함수 B의 리턴값을 계속 확인하면서 신경쓰는 것
비동기: 함수 A가 함수 B를 호출했을 때, 함수 B의 리턴값을 신경쓰지 않고 작업 완료 후 callback 함수를 실행함
블록킹과 논블록킹
- 처리되어야 하는 하나의 작업이, 전체적인 작업 흐름을 막느냐 안막느냐에 대한 관점으로 제어권이 누구에게 있느냐가 관심사
블록킹: 자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 다른 작업이 끝날 때까지 기다렸다가 자신의 작업을 시작
- A 함수가 B 함수를 호출하면, 제어권을 A가 호출한 B에게 넘겨줌
- A 함수는 제어권을 넘겼기 때문에 함수 실행을 멈춤
- B 함수가 자신의 함수를 실행하고, 실행이 끝나면 자신을 호출한 A에게 제어권을 돌려줌
- A 함수는 다시 함수를 실행함
논블록킹: 다른 주체의 작업에 관련없이 자신의 작업을 하는 것
- A 함수가 B 함수를 호출하면, B 함수는 실행되지만, 제어권은 A 함수가 그대로 가짐
- A 함수는 계속 제어권을 가지고 있기 때문에 B 함수를 호출한 이후에도 자신의 코드를 계속 실행함
동기와 비동기, 블록킹과 논블록킹의 조합
- Sync-Blocking
- 함수는 다른 함수의 리턴값을 고려해서 동작(동기)
- 함수는 다른 함수에게 제어권을 넘겨주고 대기 (블로킹)
- Sync-NonBlocking
- 함수는 다른 함수의 리턴값을 고려해서 동작 (동기)
- 함수는 다른 함수에게 제어권을 주지 않고 자신의 코드를 계속 실행 (논 블로킹)
- Async-Blocking
- 함수는 다른 함수의 리턴 값을 고려하지 않고 동작 (비동기)
- 함수는 다른 함수에게 제어권을 넘겨주고 대기 (블로킹)
- Sync-Blocking과 비교했을 때 이점이 없기 때문에 거의 사용되지 않음 -> 의도치 않게 실수로 사용
- Async-NonBlocking
- 함수는 다른 함수의 리턴 값을 고려하지 않고 동작(비동기)
- 함수는 다른 함수에게 제어권을 주지 않고 자신의 코드를 계속 실행(논 블로킹)
- 함수가 다른 함수를 호출할 때 제어권을 주지 않고 자신의 코드를 계속 실행 -> 함수가 다른 함수를 호출할 때 콜백함수를 함께 전달해 다른 함수는 자신의 작업을 처리하면 콜백 함수를 실행
동영상 예제 설명
Sync-Blocking
- 사원이 서류를 상사에게 주고, 상사가 서류를 다 읽을 때까지 기다림
- 서류를 다 읽고 나서 결과를 사원에게 전달
- 사원은 해당 업무를 바로 처리
ex) 자바에서 입력 요청을 할 때 사용함
Sync-NonBlocking
- 사원이 서류를 상사에게 주고, 상사는 서류를 다 읽을 때까지 사원의 할 일을 하라고 함
- 사원은 중간중간 끝났냐고 물어봄
- 사원은 자신의 업무를 보다가 상사가 서류를 다 읽어 결과를 전달하면 사원은 바로 업무를 처리함
Async-Blocking
- 사원이 서류를 상사에게 주고, 상사가 서류를 다 읽을 때까지 기다림
- 서류를 다 읽고 나서 결과를 사원에게 전달(이때 sync와 다른 점은 사원은 결과에 집착하지 않음)
- 사원은 시간이 될 때 받은 결과값을 가지고 처리
Async-NonBlocking
- 사원이 서류를 상사에게 주고, 상사는 서류를 다 읽을 때까지 사원의 할 일을 하라고 함
- 서류를 다 읽고 나서 결과를 사원에게 전달(이때 sync와 다른 점은 사원은 결과에 집착하지 않음)
- 사원은 시간이 될 때 받은 결과값을 가지고 처리
참고 사이트
👩💻 동기 & 비동기 / 블로킹 & 논블로킹 💯 완벽 이해하기
동기 & 비동기 vs 블로킹 & 논블록킹 개념 이 개념들을 처음 접하거나 컴퓨터 공학에 대해 잘 모르는 사람은 이 개념들이 서로 뭔가 연관이 있는 것으로 오해하기 쉽다. 아무래도 동기와 블록킹,
inpa.tistory.com
https://jaehoney.tistory.com/242
블로킹(Blocking)과 논 블로킹(Non-Blocking)이란 무엇인가?!
동기와 비동기, 블로킹과 논 블로킹을 같은 것이나 비슷한 것이라고 오해하는 경우가 많다. 해당 개념들은 전혀 다른 개념이며 직접적인 관련이 없다. 그 차이에 대해서 정리해보자. 동기 & 비동
jaehoney.tistory.com
https://www.youtube.com/watch?v=oEIoqGd-Sns
'Computer > CS' 카테고리의 다른 글
컴퓨터 구조(6) - 메모리와 캐시 메모리 (0) | 2022.11.15 |
---|---|
컴퓨터 구조(5) - CPU의 속도 (0) | 2022.11.15 |
컴퓨터 구조(4) - CPU (0) | 2022.11.13 |
컴퓨터 구조(3) - 명령어 (0) | 2022.11.12 |
컴퓨터 구조(2) - 정보 단위 (0) | 2022.11.12 |