Programming/Windows&C#

[Windows/WinAPI] Thread 생성 _beginthreadex사용 (실습7)

JMob 2013. 11. 14. 11:10
728x90
반응형

1주만에 정리해서 올린다..... 그것도 그냥 한걸로.....


첫번째 예제는 간단하게 쓰래드 하나를 만들어서 구구단을 출력하는 예제이다.



먼저 해더파일 선언이다. 머 다른건 없지만 process.h 가 추가 되었다. 

이 해더파일에 사용할 쓰래드와 프로세스 작업에 쓰이는 함수의 정의와 매크로가 포함되어 있다.

다음은 MyThread 함수다. 이름과 같이 쓰래드로 사용 할 것이며 인자가 int* 형으로 있다. 기본은 void* 형이지만 이거에 대해서는 따로 다른글에서 정리하겠다. 이 인자를 이용하여 구구단이 몇단인지를 전달 해 줄 것이다. 



다음으로 Main이다. 

여기서 9개의 핸들을 배열로 만들어 사용한다. ( 이는 WaitForMultipleObjucts를 유용하게 쓸 수 있게 해준다.)

Main에서 가장 중요한 것은 _beginthreadex함수 이다. 이 함수를 통해 쓰래드를 생성하며  4번째 인자를 통해서 인자를 넘겨준다.

자세한 설명은 따로 정리하겠다.

 WaitForMultipleObjucts 함수는 배열로 묶인 쓰래드들을 한번에 기다리세 설정 할 수 있다.




다음으로는 쓰래드에 구조에를 넘겨주는 실습이다. 위에서 언급한것은 생락한다.

해더파일은 위에서와 동일하고 locale.h 만 추가 되었다. 한글 사용을 위해 추가 하였다.


다음으로는 구조체이다. 앞에서는 int*형을 인자로 넘겨주었고 이번에는 struct*를 넘겨 줄 것이다.

이것이 가능한 이유는 실제로 데이터형 정의가 void*로 되어있기 때문이다.


다음으로는 생성 할 쓰래드이다. 구조체의 id 값을 통해서 홀, 짝값을 나누었다. (물론 다른 방법도 있다.)


여기서도 전체 사용함수는 동일하다. 다만 _beginthreadex의 4번째 인자가 이번에는 구조체인것을 확인 할 수있다.



2010105094_정민우.c


Thread.c

예제....




728x90
반응형