비동기 처리란? (Asynchronous)
- 특정 로직의 실행이 끝날때까지 기다려주지 않고 나머지 코드를 먼저 실행하는것을 비동기 처리라고 합니다.
- 비동기처리가 필요한 이유는 서버로 데이터를 요청했을 때, 서버가 언제 그 요청에 대한 응답을 줄지 모르는데 마냥 기다릴순 없기 때문입니다.
장점
- 결과가 반환될 때까지 다른 작업을 할 수 있으므로 효율적으로 자원을 사용할 수 있습니다.
- 비동기 메서드의 경우 메소드 호출만 할 뿐 그 결과를 기다리지 않습니다.
- 여러가지 일을 동시에 처리할 수 있습니다.
단점
- 동기 방식(Synchronous)에 비해 코딩하기 복잡합니다.
- 결과 값 반환까지 시간이 더 소요 될 수 있습니다.
비동기 코드
- task를 이용한 비동기 코드입니다.
- 사실 다음 예제 코드에 ReadToEndAsync() 메서드 자체로 비동기 실행이 되기 때문에 Task.Run()과 Task.WaitAll()은 생략이 가능합니다.
static void Sample_Async()
{
File.WriteAllText("sample.txt", "hello!");
var reader = File.OpenText("sample.txt");
var task1 = reader.ReadToEndAsync();
var task2 = Task.Run(() =>
{
Console.WriteLine("world.");
});
Task.WaitAll(task1, task2);
Console.WriteLine(task1.Result);
reader.Close();
}
실행 결과
병렬 코드
static void Sample_Pallel()
{
File.WriteAllText("sample.txt", "hello!");
var reader = File.OpenText("sample.txt");
Parallel.Invoke(() =>
{
Console.WriteLine(reader.ReadToEnd());
}, () => {
Console.WriteLine("world.");
});
reader.Close();
}
실행 결과
'프로그래밍 > (도서)C#코딩의기술-실전' 카테고리의 다른 글
[C#] 코딩의기술(실전편) - 2.2 변화하는 조건 (0) | 2022.03.31 |
---|---|
[C#] 코딩의기술(실전편) - 1.7 예외처리 (0) | 2022.03.31 |
[C#] 코딩의기술(실전편) - 1.6 강제 종료 처리 (0) | 2022.03.31 |
[C#] 코딩의기술(실전편) - 1.4 병렬처리 (0) | 2022.03.31 |
[C#] 코딩의기술(실전편) - 1.3 순차처리 (0) | 2022.03.31 |