190704-2 CHECKER3.C -- Mouse Hit-Test Demo Program No. 3 교육을 받으면서 노트필기 했던 내용을 날것 그대로 업로드합니다. A /*------------------------------------------------- CHECKER3.C -- Mouse Hit-Test Demo Program No. 3 (c) Charles Petzold, 1998 -------------------------------------------------*/ #include #pragma warning ( disable:4312) #define DIVISIONS 3 #define WM_DRAWXMSG WM_APP+100 typedef struct _Data { POINT pt; ..
190704-1 교육을 받으면서 노트필기 했던 내용을 날것 그대로 업로드합니다. 30. IPC(메시지) Inter process communication 프로세스 간에 통신을 해봅시다. 1 - 메세지를 사용한 교환방식 윈도우즈os 만의 RPC라는 개념이 만들어져서 사용했다. 유저 오브젝트 : Window 같은 것들. 핸들이 전역적으로 사용가능하다. 프로세스는 독립적인 가상 공간을 가진다. 32bit애플리케이션이라면 주소가 00000000~FFFFFFFF 까지 가진다.프로세스는 모두 가상주소공간이라는 주소를 사용한다. 내부적으로는 os만 안다. (64비트면 F가 16개다.) 윈도우의 핸들을 알면 메세지를 보낼 수 있다. 큰 데이터를 보내려고 가상주소를 다른 프로세스에 날리면 다른 프로세스에는 해당 데이터가..
190703-3 플래그 교육을 받으면서 노트필기 했던 내용을 날것 그대로 업로드합니다. 플래그 #include #include #include using namespace std; struct ThreadInfo { HANDLE hThread; bool bRun; HWND hwnd; POINT pt; // 클릭한 좌표 }; vector threadList; // 공유변수 #pragma region MyRegion DWORD __stdcall DrawThread(LPVOID pParam); LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam); HINSTANCE g_hInst; int WINAPI WinMain(HINSTA..
190703-2 교육을 받으면서 노트필기 했던 내용을 날것 그대로 업로드합니다. 동기화 : 비동기화 : 시간 t에 독립적으로 두개 이상 작업이 수행 (중첩, 겹침) 크리티컬 색션 : 동기화 객체라고 부른다. 동기화 객체 InterLocked~ Critical Section : User Level Mutex : Kernel Level Semaphore : Kernel Level : ↑ 데이터 보호를 위해 만들어졌다. Event : Kernel Level : 순서제어를 위해 만들어 졌다. 유저모드 동기화 크리티컬 섹션 : 메모리 접근 동기화 인터락 함수 : 메모리 접근 동기화 커널모드 동기화 뮤텍스 : 메모리 접근 동기화 (소유개념), 소유하면 비신호, 소유하고있지않으면 신호 상태가된다. 세마포어 : 메모리..
190703-1 교육을 받으면서 노트필기 했던 내용을 날것 그대로 업로드합니다. WS_CHILD : 부모 내에서만 동작 WS_OVERLAPPEDWINDOW : 겹쳐지는 윈도우 hwndChild = CreateWindow(_T("ChildWindow"), _T("Child Window !!"), WS_OVERLAPPEDWINDOW|WS_CHILD, 100, 100, 300, 300, hwndParent, (HMENU)NULL, //저번 코드 수정 NULL로 주어야 한다. g_hInst, NULL ); __declspec(thread) static int count = 0; #include #include DWORD __stdcall DrawThread(LPVOID pParam); DWORD __stdcal..
190702-5 Study 핸들이란 커널 오브젝트에 할당되는 숫자에 지나지 않는다. Windows는 커널 오브젝트를 생성할 때마다 핸들이라는 정수값을 하나씩 부여한다. 커널 오브젝트는 Windows 운영체제에 종속적이다. 도서관의 도서는 도서관에 의해서만 폐기 처분될 수 있다. 커널 오브젝트는 운영체제에 종속저긴 관계로, 여러 프로세스에 의해 접근(함수를통해)이 가능하다. 핸들(테이블)은 프로세스에 종속적이다. 프로세스 핸들은 프로세스의 커널 오브젝트를 가리키기 위한 것 프로세스 ID는 커널 오브젝트가 아니라 프로세스 자체를 구분 짓기 위한 것
190702-4 교육을 받으면서 노트필기 했던 내용을 날것 그대로 업로드합니다. worker 쓰레드 UI 쓰레드 #include #include DWORD __stdcall DrawThread(LPVOID pParam); DWORD __stdcall UIThread(LPVOID pParam); LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam); LRESULT CALLBACK ChildProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam); HINSTANCE g_hInst; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevI..
190702-3 교육을 받으면서 노트필기 했던 내용을 날것 그대로 업로드합니다. #include #include void Sleep() { for(int i = 0 ; i INC n -> Write n (3가지 연산이 결합이 된다.) 원자적인 연산 : 어떤 연산이 수행되는 동안 다른 연산에 의해 방해가되면 안된다. (명령 한줄두줄이 아님) ● 쓰레드 선점당할시 발생하는 문제 #include #include int val=0; DWORD __stdcall ThreadFunc(LPVOID pParam) { printf("ThreadFunc Param : %d 생성\n", GetCurrentThreadId()); for(int i = 0 ; i
190702-2 - 윈도우의 중요한 예제 교육을 받으면서 노트필기 했던 내용을 날것 그대로 업로드합니다. 06커널오브젝트와핸들 핸들테이블을 상속해서 상속한 핸들테이블의 핸들을 가지고 자식이 사용가능하다. child #include #include void main() { HANDLE hParentProcess; DWORD handle; printf("부모에서 생성한 이벤트의 핸들: "); scanf("%d", &handle); HANDLE hEvent = (HANDLE)handle; printf("이벤트 신호 상태 기다림...\n"); DWORD idx = WaitForSingleObject(hEvent, INFINITE); //● 신호상태 까지 INFINITE기다린다. if( idx != WAIT_OB..
190702-1 - 메모리활용 교육을 받으면서 노트필기 했던 내용을 날것 그대로 업로드합니다. ● new 로 동적 배열 할당 해보기 #include #include #include using namespace std; int main() { int row = 3; int col = 4; // input int** p = new int* [row]; //int** p = (int**)malloc(sizeof(int*) * row); for (int i = 0; i