본문 바로가기

쓰레드3

비동기 프로그래밍과 쓰레드 Java의 쓰레드, Kotlin의 Coroutine, C#의 쓰레드, Task Dart의 async, await, Future, Javascript의 async, await, Promise 다양한 비동기 프로그래밍을 접해본 경험이 있으나 나는 비동기 프로그래밍과 멀티쓰레드의 차이를 잘 모르고 있더라. 그래서 이번에 관련 내용을 학습했다. 동기와 비동기 동기는 프로그램의 흐름이 순차적인 것이고 비동기는 프로그램의 흐름이 순차적이지 않은 것이다. 즉, 순서를 보장하지 않는다. 비동기 프로그래밍은 쓰레드를 사용하여 구현되기도 하고, 싱글 쓰레드 기반으로 처리되기도 한다. 자바스크립트에서는 이러한 문제를 Promise를 이용하여 해결한다. 나는 Promise같은 비동기에 대한 처리가 내부적으로는 Thread를 .. 2023. 11. 13.
[C#] 쓰레드 생성 오브젝트 풀링이란? 미리 생성한 오브젝트를 필요한 순간에 가져다가 사용하는 개념이다. 프로그램 중간에 할당하지 않아 성능상 이점이 있다. C# 환경에서는 ThreadPool과 Task를 지원하고 있다. ThreadPool은 인력소 같은 느낌이고, Thread는 고용되서 일하는 Worker라고 볼 수 있다. Task는 작업해야 하는 업무의 개념이다. // 쓰레드 생성 기본 코드 static void ThreadBasic() { Thread t = new Thread(MainThread); t.Name = "TestThread"; t.IsBackground = true; // MainThread 종료시 같이 종료된다. t.Start(); Console.WriteLine("Waiting for thread").. 2023. 8. 26.
쓰레드 풀, 멀티 쓰레드 환경 쓰레드 1. 애플리케이션 코드를 하나하나 순차적으로 실행하는 것은 쓰레드 2. 자바 메인 메서드를 처음 실행하면 main이라는 이름의 쓰레드가 실행 3. 쓰레드가 없다면 자바 어플리케이션 실행이 불가능 4. 쓰레드는 한번에 하나의 코드 라인만 수행 5. 동시 처리가 필요하면 쓰레드를 추가로 생성 요청 마다 쓰레드 생성 장점 - 동시 요청을 처리할 수 있다. - 리소스(CPU, 메모리)가 허용될 때 까지 처리 가능 - 하나의 쓰레드가 지연 되어도 나머지 쓰레드는 정상 작동한다. 단점 - 쓰레드 생성 비용은 매우 비싸다. (고객의 요청이 올 떄마다 쓰레드를 생성하면, 응답 속도가 늦어진다) - 쓰레드는 컨텍스트 스위칭 비용이 발생한다. - 쓰레드 생성에 제한이 없다. (고객 요청이 많이와서 CPU 할당량을 .. 2023. 8. 1.