Async, Await
546
작성한 질문수 21
안녕하세요. [Async, Await] 강의 부분에서 12:20 부분에 break point를 잡고 확인해 볼때 저는 스레드하나가 나올줄 알았는데 작업자 스레드 하나가 생겨서 혼란이 왔습니다. 그러면 주 스레드와 작업자 스레드가 둘이 일을 처리하고 있다는건데, 이러면 멀티스레드로 작동되고 있는것 아닌가요? 앞에 설명에서는 Async,Await이 하나의 스레드로 비동기식으로 왓다갓다하면서 일을 처리한다고 이해를 해서요.
답변 2
1
async, await는 멀티쓰레드랑 직접적인 상관은 없으며
유니티의 코루틴처럼 코드를 비동기로 실행시키는 것입니다.
관련하여 다음 글을 읽어보면 도움이 됩니다.
https://blog.stephencleary.com/2013/11/there-is-no-thread.html
Task task = 무엇무엇; 으로 Task를 만들면 비동기로 실행하는 일감을 묘사한 것이고,
해당 task가 끝나야 다음 코드를 진행해야 한다면
await task를 하면 되는데
일종의 만남의 장소(?)가 정해진 셈이 됩니다.
12:20 코드는 아직 완성된 것이 아니며
저렇게 TestAsync를 생으로 호출하기보다는
static async Task TestAsync(); 와 같이 TestAsync도 Task를 반환하게 해준 후,
Main 에서도 await를 해주는 식으로 만들어야 합니다.
async/await 자체가 멀티쓰레드를 개입시키는 것은 아니지만,
Task.Run과 같이 쓰레드풀의 다른 쓰레드를 개입시키는 행동을 하면
멀티쓰레드로 잠시 돌아갈 수는 있습니다.
한마디로 비동기는 [싱글쓰레드/멀티쓰레드] 양쪽 상황 모두 상관없지만
그렇다고 비동기 = 멀티쓰레드라고 생각하면 절대 안 됩니다.
클래스 라이브러리 (.NET Core)이 없으면 클래스 라이브러리 선택하시면 됩니다.
0
131
1
NET 9.0 버전에서의 레이아웃 적용
1
169
1
Visual Studio 2022에서 프로젝트 만들기 질문
0
309
2
MVC를 제대로 이해를 못했는데,
0
173
1
ASP.NET
0
151
1
LING #1 에서.. 서버 GC문제
0
262
3
자바스크립트 내용이 나오나요?
0
170
1
웹 사이트 보안
0
211
2
blazor실습 시 바인딩 관련 및 버튼이 동작하지 않는 이슈가 있으면? ( .NET 8.0 기준 )
3
371
1
Uri함수 파라미터 주소에 sslport번호를 넣으면 무한 로딩이걸림
0
496
2
An unhandled exception has occured. See browser dev tools for detail.
0
340
2
EFCore 포렌키 설정 관련 질문(Entity Framework Code First One-to-Many Relationship)
0
363
3
DB 설정 관련해서 질문 드립니다
0
424
3
10분 48초 부근에 안 되는 사람들 참고하세요
1
548
1
ArgumentException: Keyword not supported: 'trust server certificate'.
0
858
1
Need Summary 부분 질문있습니다!
0
311
1
계속 똑같은 에러가 뜹니다 ㅠㅠ
0
489
1
이번 강의 코드를 받을 수 있을까요?
0
370
1
ATOM이 2022년 12월 15일 기준 종료되었네요
0
564
1
CounterState 질문입니다.
0
401
1
"연결이 비공개로 설정되어 있지 않습니다." 오류가 뜰 경우
0
1823
2
백엔드 서버에 JPA를 사용해도 문제가 없을까요?
0
567
1
SendPostRequest 에서 POST 중복된 값이 추가되는 것을 방지하려면 어떻게 하면 될까요?
0
455
1
Task<WeatherForecast[]> 를 List<Task<WeatherForecast>> 이렇게 고친 후
0
398
1





