글쓴 사람
강성욱 (dnr2144 at gmail.com)
홈페이지
첨부 파일
(연관된 글이 1개 있습니다.)
안녕하세요. async/await를 공부하는 초보입니다.
정성태님이 말씀하신 대로 한 게시물당 한 개의 질문으로 제한하겠습니다.
질문) 한 메서드 내에서 await를 사용하기 시작한 시점부터 그 이후의 코드는 전부 별도로 처리 될 텐데 굳이 await를 한 메서드 내에서 두 번 쓰는 이유를 모르겠습니다.
가장 이해가 안 되는 부분인데 p682쪽에 ns.ReadAsync가 끝나 야 그 밑에 코드가 실행되는데 굳이 await ns.WriteAsync를 사용할 이유가 있나요? 즉, 메서드 내에서 await를 쓰면 그 전 명령어는 호출 스레드에서 실행되다가 await구문 이후로는 호출 스레드는 반납되고 정성태님이 말씀하신 스레드풀의 스레드나 Task나 같은 별도의 스레드로 그 후 명령이 실행되고 그 이후는 순차적으로 실행될 텐데 말이죠.. (await 이후에 스레드 풀 스레드가 반납되는 게 아니라 메서드 종료 후에 원래 스레드 흐름으로 복귀하는 거로 저는 알고 있습니다)이렇게 생각한 이유는 p677 예문에 주석으로 await이후의 코드는 c# 컴파일러가 분리해 ReadAsync 비동기 호출이 완료된 후 호출이라고 쓰여 있어서요... 정리하자면 ns.ReadAsync가 종료되고 그 이후의 명령이 순차적으로 실행되고, 다시 ns.ReadAsync가 종료되고 ns.Close()가 실행되는데 첫 번째 await는 호출 스레드 제어를 반납하기 위해서(첫 번째는 별도의 스레드에서 작업하기 위해서) 그럴 수 있지만 두 번째 await는 의미 없는 거 아닌가? 가 제 궁금증입니다...
항상 소중한 답변 감사드립니다...
[연관 글]
[최초 등록일: ]
[최종 수정일: 3/31/2020]
... 31 32 33 34 35 36 37 38 39 40 [41] 42 43 44 45 ...
... 31 32 33 34 35 36 37 38 39 40 [41] 42 43 44 45 ...