Block과 Non-Block


Block과 Non-Block은 함수 호출에 관해서 호출자가 취하는 태도의 차이이다.

 

Block 시에는 호출자가 함수를 호출하고, 해당 함수가 실행되고 결과값이 리턴될 때까지 기다린다.

 

Non-Block 시에는 호출자가 함수를 호출하고, 리턴 되기를 기다리지 않고 바로 다음 코드를 실행한다.

 

 

 

 

Sync와 Async


동기와 비동기는 추상적인 개념이다.

 

Task A와 Task B가 인과관계가 있을 때, 이 인과관계에 따라서 순차적으로 실행된다면 동기이다.

만약 인과관계가 있음에도 A와 B가 동시에 실행된다면 이는 비동기이다.

인과관계가 없다면 A와 B는 동기에 가깝다. (인과관계가 아예 없는 경우는 동기 비동기를 논하는 것이 큰 의미가 없는 듯 하다.)

 

한편으로는, 제어권의 반환과 결과값(리턴값)의 전달이라는 측면에서도 이를 설명할 수 있다.

제어권의 반환과 결과값의 전달이 동시에 일어난다면 동기, 제어권의 반환과 결과값의 전달이 동시에 일어나지 않는다면 비동기이다.

+ Recent posts