본문 바로가기
기타

[ASP.NET Core/Devroup] await 키워드에 대해

by 항붕쿤 2023. 3. 26.

asp.net에는 await이라는 키워드가 있다. 이 키워드는 비동기 코드에서 사용되는데, 이 키워드를 사용한 다음 코드부터 await 키워드를 사용한 코드의 동작이 모두 완료될때까지 실행되지 않아 동기적인 특성을 갖는다. 그렇다면 await 키워드를 왜 쓰는 것일까?
이를 알기 위해선 await 키워드의 동작원리를 알아야한다.

await 키워드를 사용하면 비동기 메서드 호출 시 해당 작업이 완료될 때까지 다음 코드를 실행시키지 않고 대기한다. 이 때문에 비동기 메서드를 동기적으로 처리하는 것과 같은 효과를 얻을 수 있는것은 사실이다.

하지만 이 작업은 비동기 메서드를 호출하는 쪽에서 수행되므로, 호출하는 코드에서는 이 작업이 완료될 때까지 '다른' 코드를 실행시키는 것이 가능하다.

즉, await 키워드는 해당 작업이 완료될 때까지 '다음' 코드를 실행시키지 않는 동기식 실행 방식과는 다르게, 해당 작업이 완료될 때까지 '다른' 작업을 실행할 수 있도록 해주는 비동기식 실행 방식을 지원한다.
정리하자면 await을 사용하면 해당 작업이 완료될 때까지 다른 코드를 실행할 수 있으며, 작업이 완료되면 결과를 반환하여 다음 작업을 수행할 수 있다. 따라서 비동기식 실행 방식을 사용하면 CPU 자원을 효율적으로 사용하고, 다중 작업을 빠르게 처리할 수 있다.

따라서 await 키워드는 특정 코드 이전에 필수적으로 수행되어야 하는 작업이 있다면 그 필수적으로 수행되어야하는 작업에 await을 붙이는 것이 보편적이다.

예를 들면, 데이터베이스에서 데이터를 가져오는 작업을 하기 위해선 데이터베이스에 연결하는 작업을 먼저 행해야하며 이런 경우에 연결 작업에 await을 붙여서 작업이 완료된 후 다음 코드를 실행하도록 만들어야 한다.