반응형 IT창고307 세마포어/뮤텍스/이벤트 // 세마포어/*#include #include void main() { HANDLE hSemaphore=CreateSemaphore(0,//보안 3,//Count초기값 3,//최대카운트 "s");//이름 printf("세마포어를 대기합니다.\n"); WaitForSingleObject(hSemaphore,INFINITE);//++Count printf("세마포어를 획득\n"); MessageBox(0,"Release??","",MB_OK); LONG old; ReleaseSemaphore(hSemaphore,1,&old); CloseHandle(hSemaphore); //리소스 카운팅 //세마포어는 카운트 초기값과 최대카운트가있다. //세마포어는 if(카운트)시그널 이다. //카운트는 WaitForSi.. 2007. 1. 22. 스레드/동기화/비동기/크리티컬섹션/뮤텍스 /* 1. 스레드는 각자의 스택을 가진다. 2. 멀티스레드 환경에서 지역변수는 안전하다.-어떤것을 얼마나 사용하던 상관이 없다. 3. 멀티 스레드 환경에서 전역(static 지역) 변수는 불안하다. 반드시 동기화 해야한다. CriticalSection, Mutex, Semaphore, Event 등의 기범을 사용해야한다. - CriticalSection 구역에는 반드시 하나의 스레드만 존재한다. - 상호 배제 구역을 들어가기 전에 Enter() 나가면 Leave()먼저 온것이 들어가면 나중에 온것은 먼저 온것이 나갈때까지 기다려야한다.- 독점 하지만 먼조 온 스레드가 나가더라도 다시 실행하려고 하면 두 스레드는 다시 경쟁상태에 놓이게 된다. */ /* #include #include void Delay(.. 2007. 1. 22. 프로세스가 죽으면 다시 살림 /* 1. EProcess 의 포인터가 Process Enviroment Block을 가리키고 있다. PEB(Process Enviroment Block)에는 현재 디렉토리, 환경변수,command line argument을 가지고 있다. 2. Eprocess에는 프로세스 ID를 가지고 있다. */ #include #include /* void main() { //현재 프로세스의 ID얻기 -> EPROCESS 에서 꺼내오는 함수. DWORD pid = GetCurrentProcessId(); printf("프로세스 ID : %d\n",pid); //현재 디렉토리 얻기, char dir[MAX_PATH]; GetCurrentDirectory(MAX_PATH, dir); printf("현재 디렉토리 : %s.. 2007. 1. 22. 핸들값을 다른 프로세스에 복사해주기 /* 1. 윈도우를 만들때 시스템 입장에서는 메모리에 잡힌 윈도우 구조체이다. 2. 펜이 필요해 만들때에도 팬은 시스템 입장에서는 하나의 구조체이다. 3. 파일을 읽거나 쓸때에도 하나의 구조체이다. 윈도우와 관련된 객채를 User Object이다. - 핸들이 전형적이다. 펜과 같이 그래픽관련 객체를 GDI Object이다. -핸들이 지역적이다. 파일과 같이 시스템적으로 관련된 객체를 Kernel Object라 한다. -한정적 핸들 or 상대적 핸들 1. OS가 만드는3가지 객체의 종류 ↑ 2. 핸들의 특징 ↑ 3. 모든 커널객체의 공통적인 특징 (KO - Kernel Object) 1. 보안이라는 속성을 갖는다. 2. 시그널이라는 속성을 같는다. 3. 참조개수가 있다. 4. 이름이 있다. 5. 소유자는 .. 2007. 1. 22. 이전 1 ··· 55 56 57 58 59 60 61 ··· 77 다음 반응형