
안녕하세요 :)
요즘 Chat GTP를 계속 사용해보고 있습니다.
쳇봇이 은근 공부에 도움되네요 ㅎㅎ
아래 내용은 프로그램에 관련해서 물어보는게 많은데
그 중 C# 쓰레드 종류를 물어보고 예시를 알려달라고 한 결과입니다.
앞으로는 전공 서적은 없어 질수도 있다고 생각되네요.
C# Thread 종류
C#에서 다양한 쓰레드 종류를 사용할 수 있습니다. 여기에는 다음과 같은 것들이 있습니다:
1. Foreground Threads: 이것은 기본적인 쓰레드로, 주로 메인 쓰레드가 포그라운드 쓰레드입니다. 프로그램이 실행 중일 때 이 쓰레드가 실행됩니다. 포그라운드 쓰레드가 실행 중일 때는 백그라운드 쓰레드가 실행되지 않습니다.
2. Background Threads: 백그라운드 쓰레드는 포그라운드 쓰레드와 다릅니다. 이 쓰레드는 애플리케이션이 실행 중일 때 백그라운드에서 실행됩니다. 이 쓰레드는 프로그램이 종료될 때까지 실행됩니다.
3. ThreadPool Threads: ThreadPool는 애플리케이션에서 실행되는 여러 쓰레드를 관리하는 데 사용됩니다. ThreadPool에 대한 작업을 할 때는 ThreadPool.QueueUserWorkItem 메소드를 사용하여 대기열에 작업을 추가합니다. ThreadPool은 필요한 쓰레드를 만들어 작업을 처리합니다.
4. Task Parallel Library (TPL) Threads: TPL은 .NET 4.0에서 소개되었습니다. 이것은 병렬 처리 작업을 쉽게 수행할 수 있는 라이브러리입니다. TPL을 사용하면 코드를 간단하게 작성하고, 병렬 처리 작업을 쉽게 수행할 수 있습니다.
5. Async/Await Threads: Async/Await은 비동기 코드를 작성할 수 있는 방법을 제공합니다. 이것은 C# 5.0에서 소개되었습니다. Async/Await을 사용하면 UI 스레드를 차단하지 않고 비동기 코드를 실행할 수 있습니다. 이 기능은 작업이 완료될 때까지 기다리지 않고 다른 작업을 수행할 수 있습니다.
6. Timer Threads: 타이머는 특정 시간 간격으로 코드를 실행하도록 설정할 수 있습니다. 타이머는 백그라운드 쓰레드에서 실행됩니다.
이러한 쓰레드 종류는 C#에서 매우 유용하게 사용됩니다. 각 쓰레드 종류는 서로 다른 목적과 상황에서 사용될 수 있습니다.
1. Foreground Threads 예제
using System;
using System.Threading;
class Program
{
static void Main()
{
Thread foregroundThread = new Thread(ForegroundThreadFunction);
foregroundThread.Start();
Console.WriteLine("Main Thread completed");
}
static void ForegroundThreadFunction()
{
Console.WriteLine("Foreground Thread started");
Thread.Sleep(1000);
Console.WriteLine("Foreground Thread completed");
}
}
2. Background Threads 예제
using System;
using System.Threading;
class Program
{
static void Main()
{
Thread backgroundThread = new Thread(BackgroundThreadFunction);
backgroundThread.IsBackground = true;
backgroundThread.Start();
Console.WriteLine("Main Thread completed");
}
static void BackgroundThreadFunction()
{
Console.WriteLine("Background Thread started");
Thread.Sleep(1000);
Console.WriteLine("Background Thread completed");
}
}
3.ThreadPool Threads 예제
using System;
using System.Threading;
class Program
{
static void Main()
{
for (int i = 0; i < 10; i++)
{
ThreadPool.QueueUserWorkItem(ThreadPoolThreadFunction, i);
}
Console.WriteLine("Main Thread completed");
}
static void ThreadPoolThreadFunction(object state)
{
int threadNumber = (int)state;
Console.WriteLine("Thread {0} started", threadNumber);
Thread.Sleep(1000);
Console.WriteLine("Thread {0} completed", threadNumber);
}
}
4. Task Parallel Library (TPL) Threads 예제
using System;
using System.Threading.Tasks;
class Program
{
static void Main()
{
Task.Run(() => TPLThreadFunction());
Console.WriteLine("Main Thread completed");
}
static void TPLThreadFunction()
{
Console.WriteLine("TPL Thread started");
Task.Delay(1000).Wait();
Console.WriteLine("TPL Thread completed");
}
}
5. Async/Await Threads: Async/Await 예제
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
Console.WriteLine("Async/Await Thread started");
await Task.Delay(1000);
Console.WriteLine("Async/Await Thread completed");
}
}
6. Timer Threads 예제
using System;
using System.Threading;
class Program
{
static void Main()
{
Timer timer = new Timer(TimerThreadFunction, null, 0, 1000);
Console.WriteLine("Main Thread completed");
}
static void TimerThreadFunction(object state)
{
Console.WriteLine("Timer Thread executed at {0}", DateTime.Now);
}
}
'잡학다식 > 코딩 공부' 카테고리의 다른 글
[정보처리기사 필기] 1과목 - 소프트웨어 설계 요약 #1 (0) | 2024.05.20 |
---|---|
[C++/MFC] BYTE형식 초기화 (0) | 2023.12.11 |
비교 표현식(EQ,NE,LT,GT,GE) /G코드 조건문 (0) | 2023.02.10 |
티스토리 코드 블럭 테두리 디자인 수정 (0) | 2022.11.21 |
티스토리 코드블록 테마수정/강조,배경색 변경 (0) | 2022.11.08 |