제프리 릭터의 Programming Applications for Microsoft Windows에 담긴 내용입니다. 뮤텍스(Mutex) 커널 객체 : 사용 카운트, 쓰래드 ID, 재귀 카운트(현재 뮤텍스를 소유하는 쓰래드가 몇번 소유하고 있는지를 나타냄)로 구성된다. 쓰래드로 하여금 단일 리소스에 독점적으로(mutual exclusive) 접근할 수 있도록 보장한다. 그러므로 사용자 모드 객체인 크리티컬 섹션(critical section)과 동일하게 동작하더라.. 하지만 뮤텍스는 커널 객체이므로, 크리티컬 섹션보다 느리다. 이 말은 단일 뮤텍스에 서로 다른 프로세스의 쓰래드가 접근할 수 있고, 리소스를 얻기위한 쓰래드 대기 시간 값을 지정할 수 있다는 뜻이다. 가장 많이 사용되는 커널 객체이기도 하며..
제프리 릭터의 Programming Applications for Microsoft Windows에 담긴 내용입니다. 세마포어(semaphore) 커널 객체 : 리소스 카운팅에 이용된다. 사용 카운트 외에도 두 개의 부호없는 32비트 값(최대 리소스 카운트, 현재 리소스 카운트)을 갖는다. 최대 리소스 카운트는 세마포어가 제어할 수 있는 최대 리소스 갯수를 나타내고, 현재 리소스 카운트는 현재 사용 가능한 리소스의 갯수를 나타낸다. 세마포어가 따르는 규칙 현재 리소스 카운트가 0보다 크면, 세마포어는 신호 상태에 있다. 현재 리소스 카운트가 0이면, 세마포어는 비신호 상태에 있다. 시스템은 세마포어의 현재 리소스 카운트가 음수가 되는 것을 허용하지 않는다. 현재 리소스 카운트는 최대 리소스 카운트보다 클..
제프리 릭터의 Programming Applications for Microsoft Windows에 담긴 내용입니다. 대기가능 타이머(waitable timer) 커널 객체 : 특정 시간에 혹은 일정 간격으로 그 자신에게 신호를 보낸다. 주로 특정 시간에 어떤 연산을 수행해야할 때에 사용되더라.. 대기가능 타이머는 언제나 비신호 상태로 생성되기 때문에, 신호 상태로 만들려면 반드시 SetWaitableTimer()를 호출하여, 타이머가 신호 상태로 변경될 시점을 알려야 하더라.. (SetTimer()로 설정하는) 사용자 타이머와 대기가능 타이머의 비교 사용자 타이머 : 추가적인 UI 인프라를 요구하기 때문에, 리소스 사용량이 많다. 또한 사용자 타이머가 발생시키는 WM_TIMER는 가장 우선순위가 낮은 ..
제프리 릭터의 Programming Applications for Microsoft Windows에 담긴 내용입니다. 이벤트(Event) 커널 객체 : 커널 객체 중 가장 원시적인 객체. 사용 카운트(usage count), 자동 리셋(auto reset)-수동 리셋(manual reset) 상태 여부를 구분하는 불 값, 신호-비신호 상태 여부를 구분하는 불 값으로 구성되더라..수동 리셋 이벤트 : 신호 상태가 되었을 때, 이벤트를 기다리던 모든 쓰래드가 스케쥴 가능 상태가 되더라.. 자동 리셋 이벤트 : 신호 상태가 되었을 때, 이벤트를 기다리던 쓰래드 중 하나만 스케쥴 가능 상태가 되더라.. 용도 : 쓰래드 하나가 초기 작업을 한 이후에 다른 쓰래드(들)로 하여금 나머지 작업을 하도록 신호를 보낼 경..
제프리 릭터의 Programming Applications for Microsoft Windows에 담긴 내용입니다. 커널 객체(kernel object)는 사용자 모드(user mode)의 메카니즘보다 훨씬 더 유용하더라..사실 사용자 모드의 것보다 딸리는 점이라고는 성능밖에 없더라..(커널 객체를 다루는 함수는 반드시 사용자 모드에서 커널 모드로 전이(transition)하게 된다. 이 전이에서 성능 저하가 일어난다.) 쓰래드 동기화에서 거의 대부분의 커널 객체는 신호 상태(signaled state)가 아니면 비신호 상태(unsignaled state)에 놓이게 되더라.. 쓰래드 동기화를 위해 윈도우즈가 제공하는 커널 객체 : 이벤트(event), 대기가능 타이머(waitable timer), 세마..
제프리 릭터의 Programming Applications for Microsoft Windows에 담긴 내용입니다. **주의 사항** 실행 쓰래드는 비선점이라고 가정함. (허나..대부분의 고 정밀도의 실행 시간을 원하는 코드는 수명이 짧도록 작성된다.) class CStopwatch { private: LARGE_INTEGER m_liPerfFreq; LARGE_INTEGER m_liPerfStart; public: CStopwatch() { QueryPerformanceFrequency(&m_liPerfFreq); Start(); } void Start() { QueryPerformanceCounter(&m_liPerfStart); } __int64 Now() const { LARGE_INTEGER ..
- Total
- 1,719,520
- Today
- 3
- Yesterday
- 21
- 83회 조직응용
- U2
- UML
- jordan rudess
- 배낭여행
- TI 수영
- stl.net
- A dramatic turn of events
- ORM
- Logic Pro
- X.509
- Entity Framework
- PC3x
- COM
- SWEBOK
- Entity Framework 1.0
- PKI
- stl/clr
- C++/CLI
- Kurzweil
- 일본여행
- Entity Framework 4.0
- C++
- Richter
- Karma Cutting
- stanley lippman
- Dream Theater
- 영화
- 도쿠가와 이에야스
- 수영