[Windows API] 윈도우 API 스레드 동기화(critical section,mutex)
2017. 5. 19. 14:38
IT 공부/Windows API
동기화스레드간의 실행 순서를 제어할 수 있는 기술 즉 스레드끼리 서로 방해하지 않고 보조를 맞추어 질서 정연하게 실행되게끔 합니다. 동기화를 해줘야 하는 이유는?여러개의 스레드를 생성하여 사용하다 보면 순서도 뒤죽박죽이 되고, 특히 공유자원을 서로 사용하려다 보니 앞쪽 스레드가 전역변수에 값을 대입하면 뒤쪽 스레드가 그 값을 바꿔버리는 경우가 흔하죠. 이런 여러 문제들을 해결하기 위해 스레드들이 질서있게 돌아가도록 하는 것이 중요합니다. 동기화를 해주어야 되는 예) #include HWND hListProc, hWndMain; LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); HINSTANCE g_hInst; //IL LPCTSTR IpszClass = TE..
[Windows API] 윈도우 API 스레드
2017. 5. 19. 14:01
IT 공부/Windows API
스레드프로그램 내에서 각각의 작업을 하는 실행코드프로세스 생성시 하나의 주 스레드 무조건 생성된다. 멀티 스레드여러개의 스레드가 동시에 진행되는 환경각각의 스레드들이 CPU 시간을 적절히 배분하여 사용한다지금까지 제가 했던 모든 프로그램은 이 주 스레드만을 이용해 작업을 처리했습니다.하지만 멀티스레드 환경에서는 각각의 스레드들에게 여러 작업을 시켜서 동시에 작업할 수 있는 환경을 만들어 줄 수 있습니다. 예) 다운을 하면서 그림도 그리고.... 스레드 생성 함수CreateThread(보안속성,스택크기,스레드함수,전달내용,스레드의 특성,스레드 ID변수)-항상 CloseHandle()함수로 닫아줘야한다. DWORD WINAPI ThreadFunc(LPVOID lpParameter)-스레드가 작업하는 내용의 ..
[Windows API] 윈도우 API 프로세스
2017. 5. 15. 14:44
IT 공부/Windows API
프로세스프로세스란 실행중인 프로그램을 말한다.서로 다른 메모장 프로그램이 두 개 실행 되었을 때 두 개는 같은 프로그램이지만 각각 다른 프로세스로 인식된다.스레드윈도우에서 작업을 처리하는 주체프로세스는 스레드를 담는 그릇이며 실제적인 처리는 스레드에서 담당한다.프로세스는 하나 이상의 스레드를 가질 수 있다. 프로세스의 생성WinExec , CreateProcessWinExec사용하기 편리하나 제어하는 옵션이 부족하다. 되도록이면 CreateProcess를 사용하자WinExec 는 프로세스가 초기화 되기전에 리턴하므로 CreateProcess와 달리 Findwindow함수로 바로 프로세스를 찾을 수 있다. CreateProcess 10개의 인수를 가지며 반드시 필요한 인수는 아래 4개이다. lpApplic..
[Windows API] 윈도우 API MDI
2017. 5. 2. 14:21
IT 공부/Windows API
MDI지금까지 메인 윈도우 하나만 사용했던 SDI 방식과 달리 여러 개의 문서를 사용하는 프로그램 형태 (비쥬얼 스튜디오 같이 프로젝트 창,도구 창 등등 여러 문서를 열면서 작업을 하는 프로그램) MDI 프로그램의 구조 -차일드 윈도우에서 실제 작업들이 이루어 진다. (child 윈도우들은 프레임 윈도우보다 커질수 없다.) #예제 소스 #include #include "resource.h" LRESULT CALLBACK MDIWndProc(HWND, UINT, WPARAM, LPARAM); LRESULT CALLBACK MDIChildProc(HWND, UINT, WPARAM, LPARAM); HINSTANCE g_hInst; HWND hWndMain; HWND g_hFrameWnd; HWND g_hMD..