![[C#] Stream](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm5sDK%2FbtsAjtF9Cr0%2FOrOL9IKWiuMkcPfTZHQeNK%2Fimg.png)
Stream 클래스 Stream 클래스 (System.IO) 바이트 시퀀스에 대한 일반 뷰를 제공합니다. 이 클래스는 추상 클래스입니다. learn.microsoft.com namespace System.IO { public abstract class Stream : MarshalByRefObject, IDisposable { protected Stream(); // 읽기 public abstract bool CanRead { get; } public abstract int Read(byte[] buffer, int offset, int count); public virtual int ReadByte(); public Task ReadAsync(byte[] buffer, int offset, int co..
![[C#] Task](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FP0FLs%2FbtszCEg7pm0%2FJkpzPYU2rCmiKcvzS2iSQ0%2Fimg.png)
Task 클래스 Task 클래스 (System.Threading.Tasks) 비동기 작업을 나타냅니다. learn.microsoft.com - 스레드의 단점 * 스레드의 반환값을 얻기 힘듬. 어떤 형태로든 공유 필드를 만들어야 함 * 스레드의 예외를 잡아서 전파하기 힘듬 * 스레드의 연산이 끝난 후 다른 뭔가를 수행하게 만들 수 없음(Join은 현재 스레드가 차단됨) * 세밀한 동시성을 구현하는데 방해가 많음 - 조합 능력이 부족함 * 수많은 스레드를 사용할 경우 유지하는데만 많은 메모리가 소모됨 - Task * 스레드보다 더 높은 수준의 추상 * 하나의 동시적 연산(Concurrent Operation)을 대표 * 조합 할 수 있음(연속(Continuation) 기능을 이용해 여러 Task를 사슬처럼 ..
![[C#] Thread](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMPiQm%2FbtszmxpFt8r%2FyqrC7NEHKvnZhtIKrAPjl1%2Fimg.png)
Thread 클래스 Thread 클래스 (System.Threading) 스레드를 만들고 제어하며, 해당 속성을 설정하고, 상태를 가져옵니다. learn.microsoft.com 스래드 생성 - Thread 객체를 인스턴스화해서 Start 메서드 호출 - 인자: ThreadStart 대리자 하나, 스레드 시동 메서드 - 매개변수 없는 메서드를 가리켜야 함 public static void Main(string[] arg) { Thread t = new Thread(WriteY); t.Start(); for (int i = 0; i < 1000; i++) { Console.Write("x"); } } static void WriteY() { for (int i = 0; i < 1000; i++) { Con..
![[C#] Stopwatch](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpoZQz%2Fbtsy8rKuWMV%2FexwbH3GHqlEZwJPwIKi9kk%2Fimg.png)
Stopwatch 클래스 Stopwatch 클래스 (System.Diagnostics) 경과 시간을 정확하게 측정하는 데 사용할 수 있는 일련의 메서드와 속성을 제공합니다. learn.microsoft.com namespace System.Diagnostics { public class Stopwatch { public static readonly long Frequency; public static readonly bool IsHighResolution; public Stopwatch(); public bool IsRunning { get; } public TimeSpan Elapsed { get; } public long ElapsedMilliseconds { get; } public long Ela..