await

    [More Effective C#] Chapter 3. 요약 (2)

    [ Item 31 : 불필요한 콘텍스트 마샬링을 피하라 ] 현재 아이템은 SynchronizationContext와 관련된 성능 문제를 다룬다. 특히, 멀티스레딩 환경에서 특정 Context로의 데이터 전달이나 메서드 호출이 필요할 때 발생하는 마샬링 오버헤드를 최소화하는 방법을 집중해서 다룬다. ‘자유 코드’ 어떤 context에서도 실행될 수 있는 코드 우리가 작성하는 대부분의 코드는 자유 코드이다. ‘Context 인식 코드’ 특정 SynchronizationContext 에서만 실행될 수 있는 코드 GUI 애플리케이션에서 UI 컨트롤과 상호작용하는 코드 웹 애플리케이션에서 HTTPContext 등의 클래스와 상호작용하는 코드 콘텍스트 마샬링이란? 하나의 스레드에서 다른 스레드로 데이터를 전달하거나..

    [More Effective C#] Chapter 3. 요약 (1)

    [ Item 27 : 비동기 작업에는 비동기 메서드를 사용하라 ] 동기 메서드에서는 코드들이 작성한 순서대로 실행된다. 하지만 비동기 메서드에서는 꼭 그렇지 않을 수 있다. 비동기 메서드는 내부 코드를 모두 수행하기 전에 미리 반환될 수 있으며, 내부적으로 요청한 비동기 작업이 완료되는 시점에 맞추어 수행을 중단했던 지점부터 다시 수행을 이어간다. private async Task SomeMethodAsync() { Console.WriteLine($"Entering {nameof(SomeMethodAsync)}"); var awaitable = SomeMethodReturningTask(); Console.WriteLine($"In {nameof(SomeMethodAsync)}, before the a..