Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

나나나

[CS] 동기와 비동기 / 블로킹과 논블로킹 본문

CS

[CS] 동기와 비동기 / 블로킹과 논블로킹

Leenk 2021. 6. 17. 23:23

동기(Synchronous)와 비동기(Asynchronous)

작업을 수행하는 주체가 두 개 이상
처리해야 할 작업들을 어떤 흐름으로 처리할 것인가
호출되는 함수의 작업 완료 여부를 누가 신경 쓰느냐

동기

  • 작업을 수행하는 두 개 이상의 주체가 동시에 수행을 시작하거나, 동시에 끝나거나, 한 주체의 수행이 끝나는 동시에 다른 주체가 시작하는 것을 의미한다.

비동기

  • 두 주체가 서로의 수행 시작, 종료 시간과 관계 없이 별도의 수행 시작, 종료 시간을 가지고 있는 것을 의미한다.

A가 B를 호출했을 때 B가 작업을 완료하고 리턴하길 기다리거나, B로부터 바로 리턴 받더라도 작업 완료 여부를 A가 계속 확인하면서 신경 쓴다면 동기이고, 어떤 상황에서든 A가 B의 작업 완료를 신경쓰지 않으면 비동기이다.


블로킹(blocking)와 논블로킹(non-blocking)

작업의 대상이 2개 이상
처리되어야 하는 작업이 전체 작업의 흐름을 막느냐 안 막느냐
호출되는 함수의 제어권 리턴 시기

블로킹

  • 자신의 작업을 하다가도 다른 주체가 작업을 시작하면 시작부터 끝까지 기다린 후에 자신의 작업을 시작한다.

논블로킹

  • 다른 주체의 작업과 관계 없이 자신의 작업을 계속한다.

A가 B를 호출했을 때 B가 자신의 작업을 모두 마칠 때까지 A에게 제어권을 넘겨주지 않고 대기하게 만들면 블로킹이고, B가 바로 리턴하여 A에게 제어권을 넘겨주고 A가 다른 일을 할 수 있는 기회를 주는 것은 논블로킹이다.


1. 동기 + 블로킹

A가 B를 호출했을 때 B는 자신의 작업이 끝나야만 제어권을 반환하고 A는 B가 작업을 수행하는 동안 대기한다.

B의 시작과 동시에 A의 작업은 멈추고, B의 종료와 동시에 A는 작업을 시작한다.

 

2. 비동기 + 논블로킹

A가 B를 호출했을 때 B는 제어권을 바로 A에게 반환하여 A가 자신의 작업을 멈추지 않고 수행한다. (이 때, 다른 주체가 하는 작업의 결과에 콜백을 설정하기도 한다.)

A와 B의 수행 시작, 종료 시간을 맞출 필요가 없다.

 

3. 동기 + 논블로킹

A가 B를 호출했을 때, B는 제어권을 바로 A에게 리턴하여 A는 자신의 작업을 멈추지 않고 수행한다.

하지만, 다른 작업들과의 동기(시간을 맞추기 위해) A는 계속해서 B의 작업 완료를 확인한다.

 

4. 비동기 + 블로킹

A가 B를 호출했을 때 B는 자신의 작업이 끝나야만 제어권을 반환하고 A는 B가 작업을 수행하는 동안 대기한다.

A는 B와 시간을 맞출 필요도 없고 B의 작업 완료 여부에도 관심이 없지만 제어권이 없으므로 작업을 수행하지 못하고 대기한다. (동기 + 블로킹과 거의 비슷하게 수행됨)

 

 

https://deveric.tistory.com/99

 

동기/비동기와 블로킹/논블로킹

동기, 비동기 그리고 블로킹, 논블로킹은 프로그램을 개발할 때 중요한 개념 중 하나입니다. 기초 프로그래밍을 배우고 응용 파트인 병렬 프로그래밍을 익힐 때 나오는 개념이고 익히기 쉽지 않

deveric.tistory.com

http://homoefficio.github.io/2017/02/19/Blocking-NonBlocking-Synchronous-Asynchronous/

 

Blocking-NonBlocking-Synchronous-Asynchronous

꽤 자주 접하는 용어다. 특히나 요즘들어 더 자주 접하게 되는데, 얼추 알고는 있고 알고 있는게 틀린 것도 아니지만, 막상 명확하게 구분해서 설명하라면 또 만만치가 않은.. 그래서 찾아보면

homoefficio.github.io

https://siyoon210.tistory.com/147

 

동기 vs 비동기, 블로킹 vs 논블로킹 쉽게 이해하기

동기(sync) vs 비동기(async), 블로킹 vs 논블로킹 사전적 의미는 일단 치워두고 , 대조되는 개념들을 어떤 관점으로 봐야하는지 짧게 설명해보겠습니다. 동기 vs 비동기 : 처리해야 할 작업들을 어떠

siyoon210.tistory.com