쓰레드 - Thread 클래스 [C#]

공부/C#  2012.09.26 10:00

안녕하세요. 명월입니다.
이번 포스트는 스레드에 대해서 공부하겠습니다.


먼저 스레드에 대해 정의하면 프로세스 내에 실행되는 작은 단위로서 병렬처리가 가능 것을 말합니다. 한 개의 프로세스에는 여러 개의 스레드가 처리될 수 있다는 뜻입니다.
윈도우를 사용하는 유저라고 하면 Ctrl+ Shift+ ESC를 컴퓨터 테스크를 확인할 수 있습니다. 테스크에는 현재 몇 개의 프로세스가 돌고 있는지 확인할 수 있습니다.



성능의 탭으로 이동하면 시스템의 항목에 몇 개의 스래드가 실행되는 지도 확인할 수 있습니다.


그럼 스래드의 관한 소스를 작성해서 자세하게 공부하겠습니다.





결과를 보시면 Thread_Test1의 출력값과 Thread_Test2의 출력값이 동시에 도는 것을 확인할 수 있습니다. 즉 Program이라는 프로세스 안에 두 개의 스레드가 실행되고 있는 형태입니다.
스레드 클래스에 대해서 MSDN은 어떻게 기술하고 있는지 확인해 보겠습니다.


MSDN 링크 - Thread 클래스



스레드 클래스 중에서 Abort() 함수를 이용하여 스레드를 제어해 보겠습니다.





실제로 커맨드 환경에서 exit 명령어를 입력하니 프로그램이 멈추었습니다.


댓글 4개가 달렸습니다.
댓글쓰기
  1. dreamer
    2012.10.05 11:58 신고 |  수정/삭제  댓글쓰기

    스레드는 오늘 처음보느라 신기한게많네요ㅎ 첫번째예제처럼 변수선언없이 바로 new 스레드로 사용하는것도 그렇고..
    그럼 int나 string도 바로 new선언으로 가능할런지..
    갑자기 궁금해져서 그러는데 c쪽은 코드를 위에서부터 컴파일해나가는거라 들었는데 스레드는 스레드테스트1이 끝나지도않는데 테스트2도 같이동작하네요. 그점은 어떻게이해해야되는거죠? 헷갈려서 어질어질하네요ㅎㅎ

    • 明月 v명월v
      2012.10.05 12:55 신고 |  수정/삭제

      안녕하세요. 먼저 방문 감사합니다.
      제가 new 키워드 포스팅을 한줄 알았는데 그 부분이 빠져 있네요.
      new는 정적 Stack 과 Heap 을 연결하는 것을 의미하는 것으로써
      즉 클래스명 변수 이름 = new 클래스명();
      이런 뜻은 stack 에 클래스명으로 된 메모리를 선언하고 new 를 선언하므로써 Heap으로 연결된다는 의미를 포함하고 있습니다.
      스래드같은 경우는 굳히 stack에 담아서 값을 넣었다 뺏다 할 필요 없이 힙에 선언하여 주소값만 뽑아 오면 되는 형태이기에 앞에 선언문이 생략이 된 것입니다.

      스레드는 C에서부터 사용하던 부분이구요. 동작형태가 하나의 형태로 컴파일 되서 읽히는 형태가 아니고 독립적으로 메모리에 선언하여 별개의 프로세스로 실행되는 형태로 돌아가는 것입니다.

      글로 보시는 것보다 실제 코드 작성을 하셔서 컴파일 하시면 이해가 빠르실 겁니다. 감사합니다. ^^

    • dreamer
      2012.10.05 14:22 신고 |  수정/삭제

      아..new를 자세히는 몰랐는데 이제 좀 이해되네요ㅎ
      스레드도 왜 그렇게되는지 조금이나마 알거같고..자세하게 답변해주시네요^^
      컴파일도 좀 많이해봐야겠네요.
      괜찮으시다면 앞으로도 궁금한점 생기면 질문좀 드릴게요ㅎ 감사합니다^^

    • 明月 v명월v
      2012.10.05 15:00 신고 |  수정/삭제

      해결 되셨으나 다행입니다.
      방문해 주셔서 감사합니다.^^