그게 그거 같고 너무 헷갈린다.
블로그 능력자 분들이 여러 예시로 설명을 쉽게 해주셔서 나도 내 나름 한번 정리해보았다.
예시는 마라톤 주자와 마라톤 주자가 쥐났을때 약을 제공해주는 차량으로 들어보았다.
1) 마라톤 주자 다리에 쥐 남
2) 차량에서 약을 제조할때까지 마라톤 중지 (비동기)
3) 약을 제조할때 문을 닫아버려 주자는 확인 못하고 기다려야함 (블록)
4) 제조 완료되면 약(제어권)을 주자한테 주고 주자는 약을 맞고 다시 뛴다.
1) 마라톤 주자 다리에 쥐 남
2) 일단 뜀 (동기)
3) 차량은 같이 달리면서 약을 제조하는데 문을 닫아 언제 끝날지 모름 (블록)
4) 제조 완료되면 달리는 주자한테 약(제어권)을 던져주고 적절할 시기에 약을 맞고 다시 뜀
1) 마라톤 주자 다리에 쥐 남
2) 주자 주저 앉음 중지 (동기)
3) 차량은 약을 제조하는데 문을 열고 제조를 해서 주자는 언제 끝날지 계속 확인함 (넌블록)
4) 약이 제조되면 주자한테 약(제어권)을 던져주고 약맞고 괜찮아져서 뜀
1) 마라톤 주자 다리에 쥐 남
2) 주자 일단 뛴다 (비동기)
3) 차량 같이 달리면서 문열고 약 제조해서 주자가 계속 힐끔힐끔 언제 되는지 확인함 (넌블록)
4) 약 제조되면 달리는 주자한테 약(제어권)을 주고 달리는 주자 적절한 시기에 약맞고 계속 뜀
동기/비동기 : 시간(시점) 싸움 (동시성)
블록/넌블록 : 제어권 싸움
정리해도 헷갈리니 계속 자주 보면서 고쳐나가면서 머리속에 정립해야겠다.