프로세스와 쓰레드는 어떤 관계에 있는가?
쉽게 말해 "프로세스는 쓰레드가 담기는 '상자'라고 이해"하면 된다.
프로세스는 하나의 프로그램이 실행되는 과정을 말한다.
그 과정은 어떻게 이루어져 있는가? 컴공이라면 알고 있지. 노가다의 코딩으로 이루어진다.
코드에서의 각각 실행되는 부분을 스레드라고 한다.
더 자세한 내용은 운영체제 카테고리에서 다루도록 하겠다.
지금부터 쓰레드 생성방법에 대해 알아보겠다.
첫 번째 파라미터 LPSECURITY_ATRIBUTES는 쓰레드의 보안관련된 정보를 전달한다. NULL값으로 설정을 하는 경우에는 디폴트 값으로 보안 설정한다.
두 번째 dwStackSize는 쓰레드에게 할당할 스택의 크기를 전달한다. 0을 전달하면 디폴트 크기의 스택을 생성한다.
세 번째는 쓰레드의 메인 함수의 정보를 전달한다.
네 번째는 이 함수에 전달하는 파라미터를 지정할 수 있다.
다섯 번째는 쓰레드 생성 이후에 행동을 결정하고, 0을 전달하면 생성과 동시에 실행 가능상태가 된다.
함수의 실행은 GreateThread로 실행하지만, C/C++ 표준함수에 대해서 안정적으로 동작하기 위해서는 beginthreadex를 사용을 권장하고 있다.
예제를 살펴보도록 하겠다.
예제를 살펴보기 전,
비주얼 스튜디오코드에서 쓰레드를 사용하기 위해서는 작업환경을 설정해줘야 한다.
코드 속성 -> C/C++ -> 코드 생성 -> 런타임 라이브러리 -> 다중 스레드 디버그 선택 => 멀티쓰레딩 환경에서 실행 가능
예제코드 --->>>
main함수에서 첫번째 쓰레드를 생성한다. -> 메인쓰레드가 된다. 부모쓰레드
beginthreadex를 통해서 새로운 쓰레드를 생성한다. 세 번째 파라미터 'ThreadFunc'와 같이 특정 함수를 기준으로 생성하게 된다. -> 자식쓰레드
'전공 공부 > 네트워크프로그래밍' 카테고리의 다른 글
커널 오브젝트의 두 가지 상 (1) | 2024.05.16 |
---|---|
Socket(소켓)의 다양한 옵션 (0) | 2024.05.02 |