We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 다른 작업이 끝날 때까지 기다렸다가 자신의 작업을 시작하는 것
사원이 Blocking 상사에게 문서를 제출했다. 그 때 Blocking 상사는 사원에게 자리에 돌아가지 말고 자신이 해당 문서를 다 읽을 때까지 기다리라고 한다. 사원은 Blocking 상사가 문서를 다 읽을 때까지 기다려야 한다. 사원에게 제어권을 바로 반환하지 않으므로 되게 비효율적인 방법이다.
다른 주체의 작업에 관련없이 자신의 작업을 하는 것
사원이 Non-Blocking 상사에게 문서를 제출했다. 그 때 Non-Blocking 상사는 사원에게 자리에 돌아가서 볼일을 보라고 한다. 사원은 자리에 돌아가 다른 할 일을 할 수 있게 된다. 사원에게 제어권을 반환해서 효율적인 처리를 할 수 있다.
동기라는 뜻을 가진다. 작업을 동시에 수행하거나, 동시에 끝나거나, 끝나는 동시에 시작을 의미한다.
사원이 Synchronous 상사에게 문서를 제출했다. 사원은 일이 너무 하고 싶어서 Synchronous 상사가 확인하자마자 문서를 처리한다.
비동기라는 뜻을 가진다. 시작, 종료가 일치하지 않으며, 끝나는 동시에 시작을 하지 않음을 의미한다.
사원이 Asynchronous 상사에게 문서를 제출했다. Asynchronous 상사가 해당 문서를 확인했지만 사원은 내용을 확인하고 당장 처리하지 않고 나중에 처리한다.
사원이 Blocking Sync 상사에게 문서를 제출했다. Blocking Sync 상사는 자신이 해당 문서를 다 읽을 때까지 사원에게 기다리라고 한다. (Blocking 개념) 다 읽고 해당 결과를 사원이 해당 업무를 바로 처리한다. (Sync 개념)
사원이 Non-Blocking Sync 상사에게 문서를 제출했다. Non-Blocking Sync 상사는 문서를 받은 후 직원에게 다른 일을 보라고 한다. (Non-Blocking 개념) 하지만 사원은 Blocking Sync 상사에게 너무 시달린 나머지 중간 중간 계속 다 읽었냐고 Non-Blocking Sync 상사에게 계속해서 질문을 한다. Non-Blocking Sync 상사가 다 읽으면 바로 사원은 해당 문서를 처리한다. (Sync 개념)
사원이 Blocking Async 상사에게 문서를 제출했다.
Blocking Async 상사는 아무 이유없이 사원을 옆에 두고 기다리라고 한다. (Blocking 개념)
사원은 결과에 큰 관심이 없지만 기다려야 한다.
Blocking Async 상사는 문서를 다 읽고 메일로 보내줄테니 돌아가라고 한다.
사원은 메일로 받은 문서를 시간이 될 때 처리한다. (Async 개념)
사원이 Non-Blocking Async 상사에게 문서를 제출했다. Non-Blocking Async 상사는 사원에게 돌아가서 다른 일을 하라고 하고 서류를 읽고 메일로 보낸다. (Non-Blocking 개념) 사원은 나중에 메일을 확인하고 처리한다. (Async 개념)
Blocking과 Non-Blocking의 가장 큰 차이는 제어권이고, Sync와 Async의 가장 큰 차이는 순서와 결과이다. Swift는 동기는 Blocking 개념, 비동기는 Non-Blocking 개념으로 사용한다.
호출된 함수가 바로 리턴해서 호출한 함수에게 제어권을 넘겨주고, 호출한 함수가 다른 일을 할 수 있는 기회를 줄 수 있으면 NonBlocking
그렇지 않고 호출된 함수가 자신의 작업을 모두 마칠 때까지 호출한 함수에게 제어권을 넘겨주지 않고 대기하게 만든다면 Blocking
The text was updated successfully, but these errors were encountered:
상사와 사원에 비유한 표현이 인상적입니다.. 이해가 훨씬 쉬운것 같아요 👍 👍
Sorry, something went wrong.
seungchan2
No branches or pull requests
Blocking
자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 다른 작업이 끝날 때까지 기다렸다가 자신의 작업을 시작하는 것
Blocking 예시
사원이 Blocking 상사에게 문서를 제출했다.
그 때 Blocking 상사는 사원에게 자리에 돌아가지 말고 자신이 해당 문서를 다 읽을 때까지 기다리라고 한다.
사원은 Blocking 상사가 문서를 다 읽을 때까지 기다려야 한다.
사원에게 제어권을 바로 반환하지 않으므로 되게 비효율적인 방법이다.
Non-Blocking
다른 주체의 작업에 관련없이 자신의 작업을 하는 것
Non-Blocking 예시
사원이 Non-Blocking 상사에게 문서를 제출했다.
그 때 Non-Blocking 상사는 사원에게 자리에 돌아가서 볼일을 보라고 한다.
사원은 자리에 돌아가 다른 할 일을 할 수 있게 된다.
사원에게 제어권을 반환해서 효율적인 처리를 할 수 있다.
Synchronous
동기라는 뜻을 가진다. 작업을 동시에 수행하거나, 동시에 끝나거나, 끝나는 동시에 시작을 의미한다.
Synchronous 예시
사원이 Synchronous 상사에게 문서를 제출했다.
사원은 일이 너무 하고 싶어서 Synchronous 상사가 확인하자마자 문서를 처리한다.
Asynchronous
비동기라는 뜻을 가진다. 시작, 종료가 일치하지 않으며, 끝나는 동시에 시작을 하지 않음을 의미한다.
Asynchronous 예시
사원이 Asynchronous 상사에게 문서를 제출했다.
Asynchronous 상사가 해당 문서를 확인했지만 사원은 내용을 확인하고 당장 처리하지 않고 나중에 처리한다.
4가지 조합
1. Blocking / Sync
사원이 Blocking Sync 상사에게 문서를 제출했다.
Blocking Sync 상사는 자신이 해당 문서를 다 읽을 때까지 사원에게 기다리라고 한다. (Blocking 개념)
다 읽고 해당 결과를 사원이 해당 업무를 바로 처리한다. (Sync 개념)
2. Non-Blocking / Sync
사원이 Non-Blocking Sync 상사에게 문서를 제출했다.
Non-Blocking Sync 상사는 문서를 받은 후 직원에게 다른 일을 보라고 한다. (Non-Blocking 개념)
하지만 사원은 Blocking Sync 상사에게 너무 시달린 나머지 중간 중간 계속 다 읽었냐고 Non-Blocking Sync 상사에게 계속해서 질문을 한다.
Non-Blocking Sync 상사가 다 읽으면 바로 사원은 해당 문서를 처리한다. (Sync 개념)
3. Blocking / Async
사원이 Blocking Async 상사에게 문서를 제출했다.
Blocking Async 상사는 아무 이유없이 사원을 옆에 두고 기다리라고 한다. (Blocking 개념)
사원은 결과에 큰 관심이 없지만 기다려야 한다.
Blocking Async 상사는 문서를 다 읽고 메일로 보내줄테니 돌아가라고 한다.
사원은 메일로 받은 문서를 시간이 될 때 처리한다. (Async 개념)
4. Non-Blocking / Async
사원이 Non-Blocking Async 상사에게 문서를 제출했다.
Non-Blocking Async 상사는 사원에게 돌아가서 다른 일을 하라고 하고 서류를 읽고 메일로 보낸다. (Non-Blocking 개념)
사원은 나중에 메일을 확인하고 처리한다. (Async 개념)
결론
Blocking과 Non-Blocking의 가장 큰 차이는 제어권이고, Sync와 Async의 가장 큰 차이는 순서와 결과이다.
Swift는 동기는 Blocking 개념, 비동기는 Non-Blocking 개념으로 사용한다.
호출된 함수가 바로 리턴해서 호출한 함수에게 제어권을 넘겨주고, 호출한 함수가 다른 일을 할 수 있는 기회를 줄 수 있으면 NonBlocking
그렇지 않고 호출된 함수가 자신의 작업을 모두 마칠 때까지 호출한 함수에게 제어권을 넘겨주지 않고 대기하게 만든다면 Blocking
The text was updated successfully, but these errors were encountered: