본문 바로가기

소켓 데이터 입력 함수 - recv() recv() 의 리턴 값- 수신한 데이터의 바이트 값을 리턴- 단, EOF 전송시 0을 리턴- 에러시 SOCKET_ERROR 리턴 더보기
커널모드 동기화 기법 - 뮤텍스(Mutex), 세마포어(Semaphore), 이벤트(Event) 1. Mutex 커널 오브젝트 기반 동기화 WaitForSingleObject(hMutex, INFINITE); // 임계영역의 시작 // ... // 임계영역의 끝 ReleaseMutex(hMutex); Mutex는 소유 - non-signaled 상태 / 소유 x - signaled 상태 WaitForSingleObject() 호출 결과는 2가지- 호출 후 블로킹 상태: Mutex 오브젝트가 다른 쓰레드에게 소유되어서 현재 non-signaled 상태에 놓여있는 상황- 호출 후 반환된 상태: Mutex 오브젝트의 소유가 해제되었거나 소유되지 않아서 signaled 상태에 놓여있는 상황 Mutex는 WaitForSingleObject() 가 반환될 때, 자동으로 non-signaled 상태가 되는 au.. 더보기
커널 오브젝트와 핸들 Windows 운영체제는 프로세스, 쓰레드 혹은 파일과 같은 리소스들을 원활히 관리하기 위해 필요한 정보를 저장해야 한다. 이때 데이터를 저장하는 메모리 블록을 가리켜 커널 오브젝트라 한다. 프로그래머는 직접 커널 오브젝트를 조작할 수 없다.그러나 MS에서 제공해 주는 시스템 함수를 이용하면 간접적 조작은 가능하다. Windows는 커널 오브젝트를 생성할 때마다 핸들이라는 정수값을 하나씩 부여한다. 이 정수값만 알 수 있다면, 커널 오브젝트를 지시하는 것은 쉬운 일이 된다. 쓰레드의 종료 시점을 알기 위해서는 커널 오브젝트의 상태를 알아야 한다. 커널 오브젝트에는 두 가지 상태(state)가 있다.- 종료된 상태 : signaled 상태 - TRUE- 종료되지 않은 상태 : non-signaled 상태 .. 더보기