본문 바로가기

카테고리 없음

WIL[9]

7월10일

 

 

동기 와 비동기

-> 처리해야할 작업들을 어떤 흐름으로 처리할 것에 대한 관점을 나타내는 것

블로킹 vs 논블로킹

->처리되어야 하는 (하나의) 작업이, 전체적인 작업 '흐름'을 막느냐 안막느냐에 대한 관점

*제어권/결과값

제어권 = 함수의 내용을 실행실킬 수 있는 권리

( 말 그대로 권한 자체이며, 제어권이 있어야 함수 안에 있는 작업들을 실행 시킬수가 있다. )

결과값 = 함수의 리턴 값

(결과값은 우리가 자주 쓰는 함수의 리턴 값을 말한다.)

 

블로킹은 다른 함수를 호출할때 제어권도 아예 넘겨주며 작업이 끝난 후 돌려 받는 형식이다.

논 블로킹도 마찬가지로 호출할때 제어권을 넘겨주긴 하지만 바로 돌려받으며, 작업이 안끝나도 바로 제어권을

돌려 받고 뒤의 작업을 시작하는것이다.

 

 

블로킹(blocking)

  • 요청자(부모함수)는 요청한 작업이 끝날 때까지 다른 작업을 하지 않고 마냥 기다림
  • 다른 함수를 호출할 때, 제어권도 아예 함께 넘겨주고 그 작업이 끝난 후에야 돌려받기 때문
  • (제어권이 없는 상태라 아무것도 못함)
  • 요청받은함수는 모든 실행을 마치고 최종 return 값을 돌려줌

논블로킹(non-blocking)

  • 요청자는 요청한 작업이 수행되는 동안 다른 작업을 할 수 있음
  • 다른 함수를 호출할 때, 제어권을 넘겨주기는 하지만 바로 돌려받음
  • (제어권을 돌려받은 호출자는 다른 작업을 바로 수행 가능)

동기와 비동기 / 블로킹과 논블로킹을 조합하면 4가지 경우의 수를 만들 수 있다.

 

 

출처: https://joooing.tistory.com/entry/동기비동기-블로킹논블로킹