inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버

Async, Await

Async, Await

546

조영웅

작성한 질문수 21

1

안녕하세요. [Async, Await] 강의 부분에서 12:20 부분에 break point를 잡고 확인해 볼때 저는 스레드하나가 나올줄 알았는데 작업자 스레드 하나가 생겨서 혼란이 왔습니다. 그러면 주 스레드와 작업자 스레드가 둘이 일을 처리하고 있다는건데, 이러면 멀티스레드로 작동되고 있는것 아닌가요? 앞에 설명에서는 Async,Await이 하나의 스레드로 비동기식으로 왓다갓다하면서 일을 처리한다고 이해를 해서요.

rest-api ASP.NET-Core blazor web-api

답변 2

1

Rookiss

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과 같이 쓰레드풀의 다른 쓰레드를 개입시키는 행동을 하면
멀티쓰레드로 잠시 돌아갈 수는 있습니다.
한마디로 비동기는 [싱글쓰레드/멀티쓰레드] 양쪽 상황 모두 상관없지만
그렇다고 비동기 = 멀티쓰레드라고 생각하면 절대 안 됩니다.

0

--

삭제된 글입니다

0

한종훈

저도 공부하는 단계라서 정확하지 않을수 있습니다.

 

주 쓰레드는 await 키워드를 만나면 (task가 바로 끝나서 async가 필요 없을때를 제외하고서는) return문을 만난것 처럼 함수 밖으로 나가버립니다.  await문 이후의 코드들은 보통은 task가 완료되었을때 Thread Pool의 background thread가 실행합니다. 

 

클래스 라이브러리 (.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