blocking, Non-blocking
blocking , Non-blocking은 다른 주체가 작업을 진행할 때 제어권 여부에 따라 구분하게 됩니다.
Blocking
작업을 진행 중 호출된 함수가 할 일을 모두 끝낼 때까지 제어권을 소유하고 호출한 함수에게 바로 돌려주지 않는 것
: 작업의 흐름이 막혔다.(Blocking)? → 제어권이 넘어가버려서...
Non-Blocking
작업을 진행 중 호출된 함수가 할 일이 끝나지 않아도 제어권을 호출한 함수에게 바로 돌려주는 것
: 작업의 흐름이 막히지 않았다(Non-Blocking)? → 제어권이 다시 돌아왔다!
Synchronous, Asynchronous
Sychronous, Asychronous은 호출되는 함수의 작업 완료 여부를 누가 신경쓰고 있는지에 따라 구분합니다.
Sychronous
호출된 함수의 수행 결과 및 종료를 호출한 함수가(호출된 함수뿐 아니라 호출한 함수도 함께) 신경 쓰고 처리하는 것
: 해당 작업을 모두 신경쓰고 있다? → 순서대로 실행된다
Asychronous
호출된 함수의 수행 결과 및 종료를 호출된 함수만(CallBack) 신경 쓰고 처리하는 것
: 해당 작업을 호출된 함수만 신경쓰고 있다? → 호출된 함수가 완료되는 순서가 달라질 수 있다.
Blocking ~ Non-Blocking , Synchronous ~ Asynchronous 조합
Blocking & Sychronous
[현재 장소 : 식당]
[인원 : 친구1, 친구2]
[친구1 : 밥을 먹는 작업 중]
친구1 : 어이~ 물 좀 떠다줄래?
친구2 : 오케이 ~
친구1 : (식사 중지... 친구2가 물을 가져오는 행동을 관찰 중)
=> 다른 일 못하고 대기... 신경은 쓰고 있음
Blocking & Asychronous
[현재 장소 : 식당]
[인원 : 친구1, 친구2]
[친구1 : 밥을 먹는 작업 중]
친구1 : 어이~ 물 좀 떠다줄래?
친구2 : 오케이 ~
친구1 : (식사 중지... 물 가져올 때까지 딴 생각중.....)
=>다른 일은 못하고 대기.... 물 떠오는 것 신경도 안 쓰고 있음
Non-Blocking & Sychronous
[현재 장소 : 식당]
[인원 : 친구1, 친구2]
[친구1 : 밥을 먹는 작업 중]
친구1 : 어이~ 물 좀 떠다줄래?
친구2 : 오케이 ~
친구1 : 다른 음식 식사 중.... (중간에) 물 뜨는 중이야?
친구2 : 뜨는 중이야~ 기달려~
친구1 : 물 뜨는 중이야?
친구2 : 뜨는 중이라니까~
친구1 : 물 뜨는 중이야?
친구2 : 뜨는 중!!!!
=>다른 일을 하는 중~.... 신경도 쓰고 있어서 잘 되고 있는지 확인
Blocking & Sychronous
[현재 장소 : 식당]
[인원 : 친구1, 친구2]
[친구1 : 밥을 먹는 작업 중]
친구1 : 어이~ 물 좀 떠다줄래?
친구2 : 오케이 ~
친구1 : 다른 음식 식사 중.... 냠냠(물 가져오는거 신경도 안 쓰는 중)
친구2 : 물 떠왔어~(CallBack)
친구1 : 오! 고마워!(반응)... 냠냠 쩝쩝
=>다른 일을 하는 중~.... 물 떠오는 것 신경도 안 쓰고 있음, 물 떠오면(CallBack) 반응
[출처]
Blocking-nonBlocking , Synchronous, Asynchronous
https://musma.github.io/2019/04/17/blocking-and-synchronous.html
http://homoefficio.github.io/2017/02/19/Blocking-NonBlocking-Synchronous-Asynchronous/
※ 잘못된 정보가 있다면 댓글을 남겨주시면 감사하겠습니다.!!!!!
'CS' 카테고리의 다른 글
DB connection Pool (0) | 2023.04.10 |
---|---|
HTTP & HTTPS (0) | 2023.03.30 |
대칭키(비밀키) & 비대칭키(공개키) (0) | 2023.03.23 |
TCP 3 way handshake & 4 way handshake (0) | 2023.03.21 |
댓글