c#/수업 내용

스레드 정의

이지훈26 2021. 9. 10. 15:01

https://docs.microsoft.com/ko-kr/dotnet/standard/threading/threads-and-threading

 

스레드 및 스레딩

프로세스와 스레드, 다중 스레드 사용 시기, 다중 스레딩을 사용해 .NET의 응답성이나 처리량을 높이는 방법을 포함하여 스레딩에 대해 알아봅니다.

docs.microsoft.com

프로세스는 실행 중인 프로그램 입니다.
스레드는 운영체제가 프로세서 시간을 할당하는 기본 단위입니다.

실행되는 흐름의 단위를 말합니다.

 

스레드가 보인다.

 

기본적으로 .NET 프로그램은 주 스레드라고도 하는 단일 스레드에서 시작됩니다.(Main Thread)

그러나 추가 스레드를 만들어서 기본 스레드에서 병렬로 또는 동시에 코드를 실행할 수 있습니다.
(동일한 시간에 여러작업을 하기 위해서)

이러한 스레드를 일반적으로 작업자 스레드라고 합니다.

 

*다중 스레드 사용 시기
- 프로세스내에 병렬처리 하기 위해서 2개 이상의 스레드가 동작시키는것.

 

 

마지막으로 관리 스레드를 나타내는 
System.Threading.Thread 클래스는 작업자 스레드 풀을 포함
한 .NER 애플리케이션을 제공합니다.

다중 스레드는 공유 리소스에 엑세스 해야 합니다.
리소스를 손상되지 않도록 스레드 엑세스를 동기화 해야 합
니다.
.NET은 공유 리소스에 대한 엑세스를 동기화하는 다양한 방
법을 제공한다.

스레드에서 예외 처리 합니다.
스레드에서 처리되지 않은 예외가 있으면 일반적으로 프로세
서가 종료된다.

멀티 스레딩에서 스레드 관리하기 어렵다 (난이도가 있다)

 

 

using System;
using System.Threading; //순서 1번 


namespace Helloworld
{
    class App
    {

        //생성자
        public App()
        {
            //순서 3번 ThreadStart 객체 생성
            ThreadStart ts = new ThreadStart(Work);  //또는
            //ThreadStart ts = this.Work;    //또는
            //ThreadStart ts = () => { };    //또는

            Thread t = new Thread(this.Work);   //순서 4번, 스레드가 만들어 진것이다.

        }

        //순서 2번, 작업 스레드에서 동작할 메서드 정의 및 기능구현
        void Work()
        {
            for(int i = 0; i < 5; i++)
            {
                Console.WriteLine(i);
            }
        }

    }
}