본문 바로가기
IT Study/C#

[C#] 스레딩(Threading)

by dev_huhu 2021. 1. 25.
반응형
* volatile
: 여러 필드에 의해 값이 수정될 수 있음을 나타낸다.
(최적화 하지 않고 반드시 메모리에서 읽어올 것)

 

Thread.Join() : 개체가 가리키는 스레드가 종료될 때까지 현재 스레드를 차단하거나 대기 상태로 만든다.
- 작업자 스레드가 반환되고 자체 종료될 때까지 반환되지 않는다.

* Abort를 호출하면 작업이 완료되었는지 여부와 관계없이 스레드가 종료되어 리소스를 정리할 수 없다.

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace ConsoleApplication1
{

    class ExClass
    {
        private volatile bool Stop;

        public void DoWork() {
            while (!Stop) {
                Console.WriteLine("사용자 스레드 실행");
                Thread.Sleep(100);
            }
            Console.WriteLine("사용자 스레드 다이..");
        }

        public void RequestStop() {
            Stop = true;
        }

        static void Main(string[] args)
        {
            ExClass exClass = new ExClass();
            Thread MyThread = new Thread(exClass.DoWork);
            MyThread.Start();
            Console.WriteLine("기본 스레드 실행");
            Thread.Sleep(1000);
            exClass.RequestStop();
            MyThread.Join();
            Console.WriteLine("마무리");
        }
    }
}

반응형

'IT Study > C#' 카테고리의 다른 글

[C#] 리플렉션(Reflection), 애트리뷰트(Attribute)  (0) 2021.03.04
[C#] 확장 메서드, 람다  (0) 2021.01.25
[C#] 프로퍼티(Property), 익명 타입  (0) 2021.01.25
[C#] 암묵적 타입  (0) 2021.01.25
[C#] 델리게이트(Delegate)  (0) 2021.01.24

댓글