2023. 10. 24. 15:43ㆍGame Develop/C# Programming
이번 시간은 스레드에 대해서 알아보려고 한다.
Thread 스레드 : 운영체제가 CPU 시간을 할당하는 기본 단위이다.
스레드가 여러 개 = 여러 가지 일을 동시에(따로 따로) 처리할 수 있다는 얘기가 된다.
먼저 스레드를 사용하기 위해선 네임 스페이스가 필요하다.
스레드의 생성자는 매개변수로 메서드를 받는다. 그렇기 때문에 간단한 메서드를 만들어준다.
1초마다 한 번씩 실행이 된다. 다음은 Thread.sleep(1000을 쓰지 않았을때의 실행 결과다)
순식간에 10까지 찍혀버렸다..
자 이 스레드를 정지키시는 데에는 두 가지 방법이 있다.
스레드 정지
Thread.abort() : 이 친구는 C# 스레드에 도가 트지 않은 이상 사용하지 않는다. 프로그램에 심각한 오류가 생길 수 있다.
Thread.Interrupt() : 따라서 우리는 스레드를 정지시키고 싶을 때 이 친구를 사용한다. 스레드가 쉴 때(잘 때) 정지.
메인 함수에 위와 같은 내용을 채워주고 돌려보면
위와 같이 나온다. 한 가지 이상한 점이 있다. 왜 Main이랑 Thread랑 일정하게 나오지 않는걸까?
그것은 컴퓨터의 구조적, 물리적 한계 때문이다. 컴퓨터도 시간을 젤 때 완벽하게 1초로 잴 수는 없다. 따라서 근사값을 활용하게 되는데, 이 부분에서 오는 차이 때문에 순서가 엇갈리는 것이다.
interrupt는 i == 5일때 실행되어 현재 혹은 그 후에 멈추게하기 때문에 6까지 찍힐 수 있다.
스레드를 종료시키는 방법에는 Join 메서드가 있다.
Join: 들어가다, 무리에 끼다, 가입하다, 합류하다
스레드가 메인 스레드로 합류함.(합류할 때까지 메인 스레드가 기다림.)
Thread.Join() 스레드 종료.
'Game Develop > C# Programming' 카테고리의 다른 글
C# Practicing(가비지 컬렉션) (1) | 2023.10.24 |
---|---|
C# Practicing(파일 입출력) (0) | 2023.10.24 |
C# Practicing(C#의 자료구조) (1) | 2023.10.24 |
C# Practicing(Generic Programming2) (0) | 2023.10.24 |
C# Practicing(Generic Programming1) (0) | 2023.10.24 |