개발자 블로그
1. 동기 비동기 차이 본문
동기 비동기, Thread, UI Thread, Timer, Task..등의 관계에 대해서 시리즈로 정리 해봄.
혼자 복습하는 차원에서 정리한거니 잘못된 내용 있으면 피드백 주시면 감사하겠습니다.
제일 먼저 알아야 할 개념 일거 같은게
동기(Synchronous)와 비동기(Asynchronous)의 차이는 주로 작업의 처리 방식과 그에 따른 프로그램의 흐름 제어에 있다.
동기 (Synchronous)
동기 방식에서는 작업이 완료될 때까지 호출한 코드가 대기.
작업이 끝날 때까지 프로그램 실행이 멈추고, 작업이 끝난 후 다음 코드로 진행.
특징
- 직렬 처리: 작업이 순차적으로 처리
- 블로킹: 작업이 완료될 때까지 호출한 코드 멈춘다.
- 단순성: 구현이 비교적 간단하며, 흐름을 파악하기 쉽다.
비동기 (Asynchronous)
비동기 방식에서는 작업이 시작되면 호출한 코드가 대기하지 않고 다음 작업을 계속해서 수행한다.
작업이 완료되면 별도의 방식으로 결과를 처리합니다.
특징
- 병렬 처리: 여러 작업이 병렬로 처리 가능
- 논블로킹: 작업이 완료될 때까지 호출한 코드 멈추지 않는다.
- 복잡성: 구현이 비교적 복잡하며, 흐름을 파악하기 어려움.
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
Console.WriteLine("Start");
await DoWorkAsync();
Console.WriteLine("End");
}
static async Task DoWorkAsync()
{
// 작업 수행 (예: 3초 동안 대기)
await Task.Delay(3000);
Console.WriteLine("Work Completed");
}
}
이 예제에서 DoWorkAsync 메서드는 3초 동안 대기하지만, await 키워드를 사용하여 비동기로 처리된다. 따라서 Task.Delay가 실행되는 동안 Main 메서드는 멈추지 않고 다음 코드로 진행 하게 된다.
'c#' 카테고리의 다른 글
Static 메서드와 Instance 메서드의 선택 기준 (0) | 2024.06.19 |
---|---|
데이터 타입(value type, reference type)(정리중) (0) | 2024.06.18 |