일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 디자인패턴
- d4
- 블록
- D2
- C++
- BOJ
- 레퍼럴
- 자료구조
- level2
- 어싱크
- 프로그래머스
- SOLID
- D3
- 이니셔티브 q
- 10505
- 삼성 SW 역량 테스트 기출 문제
- 11060
- 점프 점프
- Java
- 알고리즘
- 재밌게 할래요
- 논블록
- Initiative Q
- spring
- 메타퀘스트3
- Design Pattern
- Meta Quest3
- 백준
- SWEA
- 리퍼럴
- Today
- Total
아직은 정체성이 없는 블로그
동기(Synchronous)와 비동기(Asynchronous) / 블로킹(Blocking)과 논블로킹(non-blocking) 본문
동기(Synchronous)와 비동기(Asynchronous) / 블로킹(Blocking)과 논블로킹(non-blocking)
coooding 2020. 8. 28. 19:44동기(Synchronous)와 비동기(Asynchronous) / 블로킹(Blocking)과 논블로킹(non-blocking)
여러 책이나 영상을 통해 공부를 하다 동기와 비동기, 블로킹과 논블로킹이라는 단어를 많이 들어보았으나 그 둘의 차이를 정확히 이해하지 못하여서 정리를 해보았습니다.
블로킹(Blocking)과 논블로킹(non-blocking)
Blocking
호출된 함수가 자신의 작업을 모두 끝낼때까지 제어권을 가지고 있어 호출한 함수가 대기하도록 만듭니다.
Non-Blocking
호출된 함수가 바로 return 해서 호출한 함수에게 제어권을 주어 다른 일을 할 수 있게합니다.
간단히 정리하자면 호출되는 함수가 바로 리턴하는지 아닌지가 중요 포인트입니다.
동기(Synchronous)와 비동기(Asynchronous)
동기(Synchronous)
동기는 요청을 보낸 후 return을 받아야 다음 동작이 이루어지는 방식입니다.
어떠한 일을 처리할 동안 다른 프로그램은 정지합니다.
비동기(Asynchronous)
비동기는 요청을 보낸 후 return과는 상관없이 다음 동작이 동작하는 방식입니다.
결과가 주어지는데 시간이 걸리더라도 그 시간 동안 다른 작업을 할 수 있으므로 자원을 효율적으로 사용할 수 있습니다.
예시
타블로그에서 동기(Synchronous)와 비동기(Asynchronous) , 블로킹(Blocking)과 논블로킹(non-blocking)에 개념에 대한 예시를 재미있고 쉽게 설명해주어서 예시를 가져와봤습니다.
(https://musma.github.io/2019/04/17/blocking-and-synchronous.html)
Blocking & Synchronous
나 : 대표님, 개발자 좀 더 뽑아주세요..
대표님 : 오케이, 잠깐만 거기 계세요!
나 : …?!!
대표님 : (채용 공고 등록.. 지원자 연락.. 면접 진행.. 연봉 협상..)
나 : (과정 지켜봄.. 궁금함.. 어차피 내 일 하러는 못 가고 계속 서 있음)
Blocking & Asynchronous
나 : 대표님, 개발자 좀 더 뽑아주세요..
대표님 : 오케이, 잠깐만 거기 계세요!
나 : …?!!
대표님 : (채용 공고 등록.. 지원자 연락.. 면접 진행.. 연봉 협상..)
나 : (안 궁금함.. 지나가는 말로 여쭈었는데 붙잡혀버림.. 딴 생각.. 못 가고 계속 서 있음)
Non-blocking & Synchronous
나 : 대표님, 개발자 좀 더 뽑아주세요..
대표님 : 알겠습니다. 가서 볼 일 보세요.
나 : 넵!
대표님 : (채용 공고 등록.. 지원자 연락.. 면접 진행.. 연봉 협상..)
나 : 채용하셨나요?
대표님 : 아직요.
나 : 채용하셨나요?
대표님 : 아직요.
나 : 채용하셨나요?
대표님 : 아직요~!!!!!!
Non-blocking & Asynchronous
나 : 대표님, 개발자 좀 더 뽑아주세요..
대표님 : 알겠습니다. 가서 볼 일 보세요.
나 : 넵!
대표님 : (채용 공고 등록.. 지원자 연락.. 면접 진행.. 연봉 협상..)
나 : (열일중..)
대표님 : 한 분 모시기로 했습니다~!
나 : 😍