... | @@ -426,6 +426,54 @@ else |
... | @@ -426,6 +426,54 @@ else |
|
|
|
|
|
1. await를 사용하면 항상 쓰레드가 자동으로 만들어지는가?
|
|
1. await를 사용하면 항상 쓰레드가 자동으로 만들어지는가?
|
|
2. await Task.Delay() 했을때와 await fs.ReadAsync() 했을 때 blocking 동작이 다른 이유는 무엇인가?
|
|
2. await Task.Delay() 했을때와 await fs.ReadAsync() 했을 때 blocking 동작이 다른 이유는 무엇인가?
|
|
|
|
|
|
|
|
```c#
|
|
|
|
class AsyncTimeTest
|
|
|
|
{
|
|
|
|
private static async void AsyncRead(int i)
|
|
|
|
{
|
|
|
|
using (FileStream fs = new FileStream("test.log", FileMode.Open, FileAccess.Read))
|
|
|
|
{
|
|
|
|
byte[] buffer = new byte[fs.Length];
|
|
|
|
await fs.ReadAsync(buffer, 0, buffer.Length);
|
|
|
|
|
|
|
|
Console.WriteLine("ReadAsync({0})", i);
|
|
|
|
|
|
|
|
string txt = Encoding.UTF8.GetString(buffer);
|
|
|
|
|
|
|
|
Console.WriteLine(txt);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private static async void TaskDelay(int i)
|
|
|
|
{
|
|
|
|
await Task.Delay(1000);
|
|
|
|
Console.WriteLine("Task.Delay({0})", i);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static void Main()
|
|
|
|
{
|
|
|
|
Console.WriteLine("메인 시작 시간 : " + DateTime.Now.Ticks / 10000);
|
|
|
|
|
|
|
|
for (int i = 0; i < 100; i++)
|
|
|
|
{
|
|
|
|
TaskDelay(i);
|
|
|
|
//AsyncRead(i);
|
|
|
|
Console.WriteLine(i + "번 돌았다!");
|
|
|
|
//위 출력이 없으면 Delay(1)일 때 실행되지 않음.
|
|
|
|
//Delay(1000)으로 하면 i번 돌았다! 만 출력됨.
|
|
|
|
//AsyncRead는 평균 20번 정도 실행됨.
|
|
|
|
//그러므로 await로 인한 대기 시간은 ReadAsync > Delay(1) 이다. (test.log을 읽을때 기준)
|
|
|
|
//ReadAsync와 Delay의 blocking 동작이 다른게 아니라 1번만 실행했을 때,
|
|
|
|
//Main()이 종료되기 전에 출력되기도 하고, 출력되기 전에 Main()이 끝나기도 해서 달라보였던 것.
|
|
|
|
}
|
|
|
|
|
|
|
|
//Console.ReadLine();
|
|
|
|
Console.WriteLine("메인 끝 시간 : " + DateTime.Now.Ticks / 10000);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|
|
3. 한 메소드 안에 await가 두개 이상이면 어떻게 동작하는가?
|
|
3. 한 메소드 안에 await가 두개 이상이면 어떻게 동작하는가?
|
|
4. Task에 대한 스터디 보강 (thread는 리턴값이 있는가? Task와 thread 차이는 무엇인가? 왜 Task 타입을 정의했을까?)
|
|
4. Task에 대한 스터디 보강 (thread는 리턴값이 있는가? Task와 thread 차이는 무엇인가? 왜 Task 타입을 정의했을까?)
|
|
5. Random 클래스의 seed 역할은 무엇인가?
|
|
5. Random 클래스의 seed 역할은 무엇인가?
|
... | | ... | |