C# 멀티 쓰레드(쓰레드 조인, Thread Join)
C# 멀티 쓰레드(쓰레드 조인, Thread Join)
쓰레드가 확실히 종료 되었는지를 살펴보기 위해서는 Thread.Join 메소드를 사용할 수 있는데 Thread.Join 메소드는 동기적으로 동작하므로 쓰레드가 종료 할 때까지 기다리게 된다. 만일 어떤 이유에서든지 쓰레드가 종료되지 않는 다면 무한정 기다릴 수 밖에 없다. Thread.Join 메소드 안에 1/1000초 단위로 파라미터를 전달 할 수 있는데 이것은 Join으로 붙은 쓰레드가 종료 될 때까지 얼마나 기다릴 수 있는 가에 대한 값이다. 만일 주어진 시간 안에 종료되면 true를 반환하고, 기다리기를 중지한다면 false 값을 반환한다.
아래의 예는 Join을 이용한 예제이다. first.Join() 부분을 주석으로 막은 후 다시 실행 해보자.
using System; using System.Threading;
public class ThreadTest2 { public int[] iArray = new int[20]; public void CollectData() { for(int i=0; i < 20; i++) { iArray[i] = i+1; Console.Write(","); Thread.Sleep(500); } } }
class TestMain { [MTAThread] public static void Main() { ThreadTest2 t = new ThreadTest2(); Thread first = new Thread(new ThreadStart(t.CollectData));
first.Start(); first.Join();
int sum=0; for(int i=0; i<t.iArray.Length; i++) { sum += t.iArray[i]; }
Console.WriteLine(); Console.WriteLine("sum = {0}", sum); } } |