멀티스레드

1.프로세스와 스레드

1)용어정리 
- 프로세스(process)                   : 메모리를 비롯한 각종 리소스를 담고 있는 컨테이너로서 정적인 개념
- 스레드(thread)                       : 실제 CPU시간을 할당받아 수행되는 실행 단위로서 동적인 개념
- 주 스레드(primary thread)        : main()또는 WinMain()함수에서 시작되는 스레드로, 프로세스가 시작할 때 생성
- 컨텍스트 전환(context switch) : CPU와 운영체제의 협동으로 이루어지는 스레드 실행 상태의 저장과 복원 작업


2)컨텍스트 전환 과정


3)스레드
->스레드 생성과 종료에 대해서 알아보자

3_1) 스레드 생성에 필요한 요소
- 스레드 함수의 시작 주소
- 스레드 함수 실행시 사용할 스택 영역의 크기
 
3_2) 프로세스의 주소 공간
- 두개의 함수
- 세 개의 스레드



2.쓰레드 생성과 종료에 대해서 알아보자
 

1)CreateThread()함수 : 스레드를 생성한 후 스레드 핸들을 리턴


ex) _beginthreadex()함수에 대해서 알아보자(C++ Runtime-Library에서 제공하는 함수)
  
2) 스레드 함수 정의(항상 이런식으로 콜백함수로 지정되어있다.)


3) 스레드 종료 방법
- 스레드 함수가 리턴 
- 스레드 함수 내에서 ExitThread()함수를 호출 
- TerminateThread()함수를 호출 
- 주 스레드가 종료하면 모든 스레드가 종료
위의 4가지 경우에 대해서만 스레드가 종료됨
 
4) 스레드 종료 함수


 

3. 쓰레드를 조작하기에 필요한 함수들 정리
 

1) 스레드 조작 - 스레드 종료 대기(waitfor함수들 ㅎㅎ)



2)소켓과 연관된 주소 정보 얻기


기본 스레드


기본 스레드 + WaitForSingleObject()




멀티스레드+WaitForMultipleObjects()


이 글을 공유하기

댓글

Designed by JB FACTORY