본문 바로가기

[MFC] My Thread MFC에서 쓰레드 만들때copy & paste 용도 My ThreadBOOL CUTMModuleDlg::ServiceStart() { // server thread m_ServerThreadKill.ResetEvent(); m_ServerThreadEnd.ResetEvent(); CWinThread* pServerThread = NULL; pServerThread = AfxBeginThread(ServerProc, (LPVOID)this, THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED); if (pServerThread == NULL) { return FALSE; } else { pServerThread->ResumeThread(); } return TRUE; }void .. 더보기
스레드 수행 시간 측정 (보다 정밀한) ★ 쓰레드 수행 시간 + 시간 측정을 위해 대부분 GetTickCount64 함수를 이용 - 이 코드가 올바른 값을 획득하려면 코드 수행중 인터럽트가 수행되지 않았다는 가정 필요 - 선점형 운영체제에서는 쓰레드가 언제 CPU에 의해 수행될지 알수 없음 - 현재 코드를 수행 중 다른 작업 수행 가능 - 따라서, 쓰레드가 소비한 시간 부정확 - 실제 쓰레드가 부여받은 CPU 시간이 얼마나 되는지 알아내는 함수 필요 - GetThreadTimes / GetProcessTimes 함수 제공 + TSC (Time Stamp Counter) 이용 - 비스타 이전에는 clock timer를 기반으로 10에서 15 밀리초 단위로 CPU 시간 계산 - 비스타 부터 머신이 기동된 후부터 얼마만큼의 CPU 사이클이 수행되었.. 더보기
Process 생성 및 종료 * 프로세스 생성 + CreateProcess 함수를 사용하여 새로운 프로세스 생성 + CreateProcess함수는 새로 생성된 프로세스가 완전히 초기화되기 전에 TRUE 반환 - 운영체제의 로더가 새로운 프로세스가 필요로하는 dll을 로드하기 전에 TRUE를 반환하기 때문에, 페어런트 프로세스는 차일드 프로세스에 어떤 초기화 문제가 발생했는지 알 수 없음 + 새로운 프로세스를 만들면 시스템은 새로운 프로세스 커널 오브젝트와 스레드 커널 오브젝트를 생성 - 커널 오브젝트가 새롭게 생성되면 사용 카운트(usage count) 값이 1로 초기화 - CreateProcess 함수 반환 전, 프로세스 커널 오브젝트와 커널 오브젝트를 최대 접근 권한으로 한번 더 오픈 PROCESS_INFORMATION 구조체 .. 더보기
[펌] C/C++ Mixed Programming (name mangling) 아래 블로그를 통해 extern "C"의 정체를 알게 됐다. [펌] - http://yesarang.tistory.com/65 고절가주팁 두번째 시간입니다. 저번 글에서 말씀드린 대로 C/C++ 섞어 프로그래밍하기 기법에 대해 말씀 드리겠습니다. C/C++ 섞어 프로그래밍하기에 대해 글을 써 봐야겠다고 생각하게 된 건 다음 글 때문이었습니다. C에서 C++로 작성한 라이브러리 쓰기먼저 name mangling이라는것을 알아보았다. 하여튼 이넘때문에 C에서 C++에서 작성한 라이브러리를 사용하고 싶을때는 C++ 라이브러리를 작성할때 애초에 C에서 사용될수 있다는것을 염두해 두고 작성해야 한다는 말이다... 위 글을 읽고 났더니 옛날에 C/C++ 두 언어를 다 써서 개발을 해야 했던 기억이 나더군요. 그래서.. 더보기
프로세스 인스턴스 핸들 (Process Instance Handle) 인스턴스 핸들이란? 모든 실행 파일과 DLL 파일은 프로세스의 메모리 공간 상에 로드될 때 고유의 인스턴스 핸들을 할당 받는다. 이 인스턴스 핸들은 WinMain의 첫번째 매개변수인 hInstance를 통해 전달된다. 그리고 이 핸들 값은 다음과 같이 보통 리소스를 로드할 때 사용된다. HICON LoadIcon ( HINSTANCE hInstance, PCTSTR pszIcon); 많은 애플리케이션에서 WinMain의 hInstance 매개변수를 전역변수로 저장해 두고 사용한다. 아래와 같이 HMODULE형 인자를 요구하는 함수들이 있으며, HMODULE과 HINSTANCE는 완전 동일하다. (16비트 윈도우에서 구분되었지만 지금은 혼용) DWORD GetModuleFileName (HMODULE hI.. 더보기