C# 서버 개발자 전환기 1편
2026-09-14 15:09:05
C# 동작 방식과 async/await
1. C# 코드가 실행되는 전체 구조
1 | C# 소스 코드 |
IL(중간 코드)를 쓰는 이유
1 | C# 코드 |
플랫폼 독립성 때문에 필요함
2. CLR
CLR(Common Language Runtime)은 .NET 프로그램이 실행되는 환경
- 메모리 관리
- GC
- 예외 처리
- Thread 관리
- JIT 컴파일
- 비동기 작업 지원
- 타입 안정성
3. GC
C#에서 new로 생성한 객체는 Managed Heap에 만들어진다.
1 | var user = new User(); |
1 | Stack |
더 이상 참조되지 않는 객체는 GC가 나중에 메모리를 회수한다.
4. Thread
Thread는 실제로 코드를 실행하는 단위다.
1 | Thread |
직접 Thread를 생성해야 하는 경우
1 | var thread = new Thread(Work); |
5. ThreadPool
서버에서 요청마다 Thread를 새로 만들면 비효율적이기 때문에
.NET은 ThreadPool을 사용한다.
1 | ThreadPool |
6. Task
Task는 Thread가 아니고, 비동기 작업의 결과와 상태를 나타내는 객체다
1 | User user = await GetUserAsync(); // 결과값이 필요한 경우 |
7. async / await
1 | public async Task<User> GetUser() |
실행흐름
1 | GetUser() |