c#

C# AutoResetEvent 를 이용한 쓰레드 제어

sieunju 2016. 12. 28. 21:51
반응형

제가 공부를 하면서 여러개의 쓰레드를 작동 시키면 동시다발적으로 쓰레드 들이 움직이게 되는데 이것을

"주차장 차단기" 처럼 차례대로 움직이는 방법이 없을까 하다가 알게 되어 저만의 방식로 포스팅을 해보도록 하겠습니다. :D


쓰레드란, 프로그램이 매순간! 어떻게 흘러가는지 보여주는 것이라고 생각하시면 됩니다.

한마디로 화면에 어떤것들이 움직이는 지와 그러한 것들이 어떤흐름으로 움직이는지 보여주는 것이라고 생각하면 이해하기가 좀더 수월하겠습니다. 예를 들면, 제가 공을 던지면 공이 움직이겠죠? 공이 직선이든 곡선이든 어떠한 방향으로 움직일텐데 이것을 쓰레드 라고 할 수 있습니다. 이 정도면 잘 이해 하셨을거 같습니다. :D


프로그래밍 하면서 쓰레드 라는게 정말 중요하고 잘 다뤄야 합니다. 


아래 예시를 보고 한번 기본적인 쓰레드구성을 보겠습니다. 



이런식 으로 정말 간단하게 1초마다 Thread_A와 Thread_B가 동시에 작동하도록 했습니다. 

그럼 결과 화면으로는 아래 사진이 되겠습니다.


이렇게 어쩔땐 Thread_A가 먼저 실행되고 어쩔땐 Thread_B가 먼저 실행되는 엉망진창인 결과 화면이 되겠습니다

:(

하지만 여기서 C# "AutoResetEvent" 신호형식의 쓰레드 제어를 하게 되면 A쓰레드가 끝나면 B쓰레드가 실행되는 식으로 할수 있습니다.



이렇게 정말 간단히 쓰레드를 구성해보았습니다. 이렇게 코딩을 하면 출력화면으로는 


이렇게 A 쓰레드가 다 완료되면 다음 B 쓰레드로 넘어가는 과정이 되겠습니다. 


예시로 보여준 소스는 정말 간단히 구성한 소스이니 이렇게 작동하는 구나 라고 알고 본인의 스타일대로 코딩하시면 되겠습니다. :D


이 메소드에 도움이 되었던 사이트는 ↓↓↓↓↓↓


https://msdn.microsoft.com/ko-kr/library/system.threading.autoresetevent(v=vs.110).aspx


마쏘에서 제공해주는 MSDN 여기가 가장 잘나와있고, 공부하기 좋은 곳인거 같습니다. (참고로 제가 많이 찾는 사이트입니다. ㅎㅎ)


그럼 이만 포스팅을 마치도록 하겠습니다. 


반응형