티스토리 뷰
Blocking: 자신의 작업을 진행하다가, 다른 주체의 작업이 시작되면 다른작업이 끝날때까지 기다렸다가 자신의 작업을 시작하는 것
Non-Blocking: 다른 주체의 작업과 상관없이, 자신의 작업을 하는것
사원이 서류를 작성해서 상사에게 전달을 해야한다. 이때 상사를 blocking상사라고 해보자
blocking상사는 해당 서류를 읽을때까지 기다리라고한다. 이후 다 읽고서 사원에게 돌아가라고한다.
그렇다면 상사가 서류를 읽을때까지 계속 기다려야한다.
non-blocking이라는 상사에게 서류를 전달한다고해보자.
읽어볼때니 돌아가세요. 이제 사원은 돌아가서 일을 할 수 있게 된다.
blocking, non-blocking의 차이는 다른주체가 작업을할때 자신의 제어권이 있는지 없는지 가 중요하다.
synchronous : 동기
작업을 동시에 시작, 동시에 끝나거나, 끝나는 동시에 시작 을 의미
서류를 상사에게 전달해야한다
sync 상사는 기다리거나 다른일을 해도, 신경쓰지않는다. (기다리거나 or 다른일) 처리한다.
사원은 상사가 서류를 보고 전달 해 준 결과를 가지고, 빠르게 업무를 처리하고싶어한다.
'바로처리할게요'! 하고 업무를 처리한다.
asynchronous : 비동기
시작, 종료가 일치하지 않으며, 끝나는 동시에 시작을 하지 않음을 의미한다.
서류를 전달해야하는 상사는 async 상사.
sync상사과 다르게 일을 바로 처리하지않아도되기ㅗ, 기다리거나 다른일을 해도 상관하지않는다.
나중에 이거 처리해~ 라고 사원에게 전달을 해준다.
사원은 언젠가 처리를 하면된다.
blocking, non-blocking과 상관없이 동기 비동기는
결과를 돌려줬을때 순서와, 결과에 관심이 있는지 없는 지로 판단된다.
blocking | non-blocking | |
sync | blocking과 sync | non-blocking과 sync |
async | blocking과 async | non-blocking과 async |
blocking과 sync
사원이 blocking sync 상사에게 서류를 전달하면,
해당서류를 읽을때까지 기다리라고하고, 결과를 전달하면 사원은 해당업무를 바로! 처리하게된다 (동기)
non-blocking 과 sync
사원이 non-blocking async 상사일때
상사는 사원에게 다른 업무를 보라고한다. 그래서 중간중간 물어본다.. 끝나셨나요? 아직입니다. 대답하면 또 사원은 자신의 업무를 보다가 물어본다. 끝나셨나요? -> 동기는 결과에 관심이많다.
non-blocking과 async (api요청)
사원에게 돌아가서 다른ㄴ업무를 보라고한다. 이후에 전달해준다. 나중에 사원은 메일을 확인하고 처리를 하게된다.
blocking과 async (게임에서 맵을 넘어갈때, 가져오기전까지 로드율이 얼마인지보여줘야한다.)
제어권이 없고, 결과를 바로 처리하지않아된다.
결과에관심이없어도 기다려야한다. 일이끝나면 돌아가세요 하면 돌아가서 사원은 일을 이후에 처리하면된다.