동기/비동기 vs 블록/넌블록

유존돌돌이·2022년 2월 28일
0

공부

목록 보기
16/22

1. 동기 / 비동기

1) 동기(Synchronous)

  • 작업을 동시에 수행하거나, 동시에 끝나거나, 끝나는 동시에 시작

2) 비동기(Asynchronous)

  • 시작, 종료가 일치하지 않으며, 끝나는 동시에 시작하지 않음

2. 블록 / 넌블록

1) 블록(Block)

  • A함수가 B함수를 호출하면, 제어권이 A에서 B로 넘어간다.

2) 넌블록(Non-Block)

  • A함수가 B함수를 호출해도, 제어권을 넘겨주지 않는다.

그게 그거 같고 너무 헷갈린다.
블로그 능력자 분들이 여러 예시로 설명을 쉽게 해주셔서 나도 내 나름 한번 정리해보았다.
예시는 마라톤 주자와 마라톤 주자가 쥐났을때 약을 제공해주는 차량으로 들어보았다.

3. 비교

1. 동기 & 블록

1) 마라톤 주자 다리에 쥐 남
2) 차량에서 약을 제조할때까지 마라톤 중지 (비동기)
3) 약을 제조할때 문을 닫아버려 주자는 확인 못하고 기다려야함 (블록)
4) 제조 완료되면 약(제어권)을 주자한테 주고 주자는 약을 맞고 다시 뛴다.

2. 비동기 & 블록

1) 마라톤 주자 다리에 쥐 남
2) 일단 뜀 (동기)
3) 차량은 같이 달리면서 약을 제조하는데 문을 닫아 언제 끝날지 모름 (블록)
4) 제조 완료되면 달리는 주자한테 약(제어권)을 던져주고 적절할 시기에 약을 맞고 다시 뜀

3. 동기 & 넌블록

1) 마라톤 주자 다리에 쥐 남
2) 주자 주저 앉음 중지 (동기)
3) 차량은 약을 제조하는데 문을 열고 제조를 해서 주자는 언제 끝날지 계속 확인함 (넌블록)
4) 약이 제조되면 주자한테 약(제어권)을 던져주고 약맞고 괜찮아져서 뜀

4. 비동기 & 넌블록

1) 마라톤 주자 다리에 쥐 남
2) 주자 일단 뛴다 (비동기)
3) 차량 같이 달리면서 문열고 약 제조해서 주자가 계속 힐끔힐끔 언제 되는지 확인함 (넌블록)
4) 약 제조되면 달리는 주자한테 약(제어권)을 주고 달리는 주자 적절한 시기에 약맞고 계속 뜀


4. 정리

동기/비동기 : 시간(시점) 싸움 (동시성)
블록/넌블록 : 제어권 싸움
정리해도 헷갈리니 계속 자주 보면서 고쳐나가면서 머리속에 정립해야겠다.

0개의 댓글