처리되어야 하는 작업이, 전체적인 작업의 흐름을 방해를 하느냐, 안하느냐의 여부입니다.
즉, 제어권이 누구한테 있느냐가 최대 관심사입니다.
자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 다른 작업이 끝날 때까지 기다렸다가 자신의 작업을 시작합니다.
즉, 1번 함수가 2번 함수를 호출하면, 제어권을 1번 함수가 호출한 2번 함수에게 넘겨줍니다.
1. 1번 함수가 2번 함수를 호출하면 2번에게 제어권을 위임합니다.
2. 제어권을 위임받은 2번 함수가 자신의 함수를 실행합니다. 이 과정에서 1번은 제어권이 없기에 함수의 실행을 멈춥니다.
3. 2번 함수가 모든 함수실행이 끝난다면 이제 자신을 호출한 1번 함수에게 다시 제어권을 위임합니다.
다른 주체의 작업에 관련없이 자기 자신의 작업을 진행하는 것 입니다.
즉, 1번 함수가 2번 함수를 호출해도 제어권은 그대로 1번함수가 갖고있습니다.
1. 1번 함수가 2번 함수를 호출하면, 2번 함수를 실행 하지만, 제어권은 1번 함수가 그대로 가지고 있습니다.
2. 1번 함수는 계속 제어권을 갖고 있기 때문에 2번 함수를 호출한 후에도 자신의 함수 즉, 1번 함수를 계속 실행합니다.
호출하는 함수는 호출된 함수의 작업 완료 / 리턴을 계속 기다립니다.
호출된 함수는 자신의 작업이 완료되면 리턴합니다.
따라서 호출한 함수는 함수를 호출한 후, 리턴을 받기 전까지 다른 일을 하지 않고 대기합니다.
호출하는 함수는 호출된 함수의 작업 완료 및 리턴을 기다리지 않습니다.
호출된 함수는 호출되면 바로 리턴합니다.
호출하는 함수는 호출된 함수의 작업 완료 및 리턴을 끝냈는지 계속 기다립니다.
호출된 함수는 호출되면 바로 리턴합니다.
즉, 호출된 함수는 호출 이후 제어권을 바로 받기 때문에, 작업을 계속 진행하면서, 호출했던 함수의 작업 완료를 주기적으로 확인해줍니다.
호출하는 함수는 호출된 함수의 작업 완료 및 리턴을 기다리지 않습니다.
호출된 함수는 자신의 작업이 완료되면 리턴합니다.
호출한 함수는 호출한 함수의 리턴을 기다리지 않지만, 호출된 함수는 자신의 작업이 끝날때까지 제어권을 넘겨주지 ㅇ낳기 때문에 호출된 함수의 작업이 완료될때까지 대기하게 됩니다. 즉, Sync + Blocking과 유사하게 동작하며, 이 방식에 비해 별다른 장점이 없습니다.