[CS 정리] Block vs Non-block & Sync vs Async

June·2021년 5월 28일
0

[CS] CS 지식 정리

목록 보기
9/27

[10분 테코톡] 🎧 우의 Block vs Non-Block & Sync vs Async

기본 용어 정리

기존의 "결과값 반환" -> "결과값 전달"
제어권을 주고 받는 것 -> "제어권 반환"

Block vs Non-Block

Block

이 상태에서 호출자는 아무것도 할 수가 없다.즉 호출자의 행동을 블록한 것이다.

결과값이 다시 돌아가면 제어권이 호출자에게 돌아온다.

Non-Block

Non-block 상황에서는 제어권이 다시 바로 돌아온다. 그 이후 함수 A는 쓰레드든지 쓰레드를 분할해서 다른 제어권을 별도로 가지든지 해서 따로 돌아간다.

호출자는 제어권을 가지고 함수 B를 실행하고 할 수 있는데 그럼 funcionA의 결과값은 어떻게되는 것일까?

Synchronous Asynchronous

Synchronous

함수 A의 끝과 함수B의 시작을 맞추거나
제어권의 반환과 결과괎의 전달을 맞추는 것을 말한다.

Asynchronous

Sync Nonblock

처음에 functionA에 제어권이 넘어가고 안끝났는데 제어권을 반환한다. 결과값은 "완료되지 않음"이라는 결과값이다. 제어권과 결과값의 반환이 동시에 이뤄졌다. 그래서 동기다. 하지만 아직 안끝났는데 반환했으니 논블락이다. 그 뒤에 끝났는지 물어보는데 안끝났고 한번더 물어보면 그제서야 끝났다고 결과값을 준다.

왜 이렇게 하는걸까? 컨텍스트 스위치가 발생하는데. 돌아왔을 때, 잠시 application측에서 할일을 하는 것이다.

기타 참고

https://asfirstalways.tistory.com/348

0개의 댓글