260829 주말특강실록: 동기와 비동기에 대하여
코루틴.... 동기/비동기.......ㅇ0ㅇ.....;;;;;;;???????????????????????????????????????
한 줄 한 줄 실행되는거 = 동기.....
모가 실행되는 동안 쟤가 실행된다 <= 같은게 안 됨......
비동기..... a가 뭐 하다가 b한테 요청 보내놓고 그거 끝날떄까지 기다렷다가 a가 다시 작동하는거...
멀티 스레드라고 머선 개념이 있긴한데,....그거랑 다르다 (근데 난 어차피 모르니까........) 그건 작업자가 애당초 2명인거고.... 정신 건강을 위하자면 ......"쓰지마"
동기 비동기는 하나의 작업 안에서 저런게 일어난다는거.....
Task
- 일종의 자료형(type)
- 다른 자료형들이 데이터를 담거나 할때 task가 담고있는것은 '일' 그 자체다.
- 근데 이제 중간에 잠깐 스탑했다가 나중에 끝내는 일.....(?????)
Async
- "이거 await 쓰는 함수야" 라고 알려주는 역할
Await

- 멈췄다가 완료될때까지 대기.
비동기만 쓰면 일이 어던 순서로 처리될지 머릿속에 예측이 안된다 (강사님 포함) 그래서 그쯤부터 쓰는게 시퀀스 다이어그램(.....????????????????????)
문법은 안 어려운데 순서가 뒤죽박죽개죽 되가지고 상황을 읽는게 어렵댄다....
using System;
public class Program
{
public static async Task Main(string[] args)
{
Console.WriteLine("Main 시작");
bool isRunning = false;
isRunning = await Timer();
while (!isRunning)
{
Console.Write(".");
}
Console.WriteLine("Main 종료. 프로그램 끝");
}
public static async Task<bool> Timer()
{
Console.WriteLine("타이머 시작");
// 여기서 3초를 대기하고 싶음
// Thread.Sleep(3000);
await Task.Delay(3000); // 잠깐 기다려!!!!
Console.WriteLine("타이머 끝");
return true;
}
}
실행 결과:
Main 시작
타이머 시작
타이머 끝
Main 종료. 프로그램 끝
제대로 실행 되려면
public static async Task Main(string[] args)
{
Console.WriteLine("Main 시작");
Task<bool> isRunning = Timer();
while (!isRunning.IsCompleted)
{
Console.Write(".");
}
Console.WriteLine("Main 종료. 프로그램 끝");
}
메인을 이 상태로 고치면 된다.
하 정말 쉽지 않네......




