본문 바로가기
프로그래밍/언어_스크립트

[MFC] UI thread와 Worker thread의 분리..

by 써드아이 2008. 2. 6.

worker thread - 시스템으로부터 오는 메세지의 처리 기능이 없다

ui thread - 주로 시스템으로부터 오는 메세지의 처리를 담당한다
   MFC의 CWinThread로부터 상속받아 구현된다.
   (CWinApp, CWinApp로부터 상속받은 클래스도 가능)


스래드의 생성은 주로 AfxBeginThread() 함수를 사용하게 되며
Worker Thread의 경우 AFX_THREADPROC 타입의 쓰레드 함수를,
UI Thread의 경우 CWinThread에서 상속한 클래스가 가지고 있는
CRuntimeClass의 포인터를 넘겨주어야 한다.


AfxBeginThread() 함수로 생성한 쓰레드의 경우 쓰레드가 생성되는
심점에 쓰레드가 일시 정지 상태일 경우가 있ㅎ기 때문에 ResumeThread() 함수로
쓰레드를 재시작 시켜주어야 한다


UI 쓰레드를 위해 CWinThread 클래스의 Run() 메쏘드를 재정의 해야할 필요가 있다.
이 Run() 메소드에서 UI의 변경을 위한 코드를 작성한다.



%%%% ResumeThread(), Run() 함수는 CWinThread 클래스의 멤버 함수다.