동기, 비동기

ungHeung·2023년 4월 26일
0

Web

목록 보기
2/4
post-thumbnail

동기와 비동기에 대해 공부해봅시다!

동기 방식

동기 방식은 한 번에 하나의 요청과 응답을 처리합니다. 요청을 보낸 후 응답이 올 때까지 다음 동작을 수행할 수 없죠.

밥을 동기 방식으로 먹고있다는 가정을 해봅시다.

숟가락은 밥을 퍼서 입에 밥을 배달하는 임무를 받았고, 곧바로 밥그릇에 담긴 밥을 퍼 입으로 나르기 시작했습니다.

입에 도착한 숟가락은 담고 있던 밥을 입에 넣은 후 입이 다음 밥을 넣을 수 있는지 확인합니다.

하지만 입은 방금 넣은 밥을 씹고있기 때문에 바로 응답할 수 없었고, 숟가락은 입으로 부터 다음 밥을 퍼와도 괜찮다는 답이 올 때가지 기다립니다.

시간이 흐르고 입이 입안의 음식물을 모두 삼킨 것을 확인한 숟가락은 다시 입에 넣을 밥을 담기 위해 그릇으로 향합니다.

여기서 밥은 숟가락이 입에 보내는 요청이 되고, 밥을 삼킨 입의 행위가 응답이 되며, 숟가락이 보낸 요청에 대한 응답이 올 때까지 숟가락은 다음 밥을 푸기 위한 행동을 하지 않고 대기하게 됩니다.

비동기 방식

비동기 방식은 한번에 여러개의 요청, 응답을 처리합니다. 하나의 요청을 보낸 후 응답을 기다리지 않고 다른 요청을 보낼 수 있죠.

이번엔 비동기식으로 밥을 먹어볼까요?

입은 숟가락이 날라온 밥을 씹고 있습니다. 입은 이번엔 젓가락에게 반찬을 가져다 달라고 주문합과 동시에, 숟가락에게도 다음 밥을 가져오도록 주문합니다.

숟가락과 젓가락은 입이 밥을 씹고 있는 것과는 상관 없이 입이 주문한 밥과 반찬을 다시한번 배달합니다.

여기서 입은 숟가락과 젓가락에게 밥과 반찬을 가져다 달라는 요청을 합니다. 그런데 동기 방식과는 다르게 밥, 혹은 반찬이 배달(응답)되기를 기다리지 않고 씹는 동작을 계속 함과 동시에 다음 밥, 반찬을 주문하는 동작을 요청합니다.

정리

동기는 요청과 응답을 직렬로 처리하기 때문에 간단하고 직관적이라는 장점이 있는 반면 요청에 대한 응답을 기다려야 하기 때문에 시간이 오래걸린 다는 단점이 있으며, 비동기는 요청, 응답을 병렬로 처리하기 때문에 동기에 비해 동작에 대한 수행 시간이 단축된다는 장점이 있는 반면, 복잡하다는 단점이 있습니다.

profile
재미있는

0개의 댓글