글
Programming 2009. 7. 28. 11:37WaitForMultipleObjects
WaitForMultipleObjects
뜻 그대로 여러개의 object handle가 Signaled 상태나 일정 시간이 지날 때까지 기다리는 함수.
DWORD WINAPI WaitForMultipleObjects(
DWORD nCount,
const HANDLE* lpHandles,
BOOL bWaitAll,
DWORD dwMilliSeconds );
인자:
- nCount : lpHandles에 들어있는 object handle의 갯수. 최대 MAXIMUM_WAIT_OBJECTS (64개)만을 지정할 수 있다.
- lpHandles : 함수가 기다릴 object handle의 배열. 이 배열은 서로 다른 종류의 obejct의 handle들이 들어갈 수 있다.
- bWaitAll : TRUE이면 lpHandles의 모든 handle의 signal을 기다리고, TRUE이면 하나라도 signal이 오면 리턴된다. 후자의 경우 리턴값은 signal을 준 object가 된다.
- dwMilliSeconds : bWaitAll에 의한 조건이 만족되지 않더라도 이 값에 의한 시간이 흐르면 함수는 리턴된다. 0이라면 즉시 리턴되고, INFINITE(0xFFFFFFFF)이면 무한정 기다린다.
리턴값:
리턴값 | 의미 | 참조 |
WAIT_OBJECT_0 ~ (WAIT_OBJECT_0)+(nCount-1) | bWaitAll이 true면 전체 오브젝트가 signal상태가 됨 아니면 (결과값-WAIT_OBJECT_0)번째 object가 signal 상태가 됨 |
WAIT_OBJECT_0 => 0x00000000 |
(WAIT_ABANDONED) ~ (WAIT_ABANDONED + nCount - 1) | 전오브젝트를 기다리고 있는 경우에는, 모든 오브젝트가 시그널 상태가 되어, 그 중에 방폐되었기 때문에 시그널 상태가 된 뮤텍스가 포함되어 있는 것을 나타냅니다.임의의 오브젝트를 기다리고 있는 경우, (반환값 - WAIT_ABANDONED) (은)는, 방폐되었기 때문에 시그널 상태가 된 뮤텍스 오브젝트의 핸들의 pHandles 배열내에서의 인덱스를 나타냅니다. | WAIT_ABANDONED => 0x00000080 |
WAIT_TIMEOUT |
타임 아웃 시간이 경과한 것을 나타내 보입니다. |
WAIT_TIMEOUT => 0x00000102 |
WAIT_FAILED | 에러가 발생한 것을 나타내 보입니다.확장 에러 정보를 취득하려면 , GetLastError 함수를 사용합니다. | WAIT_FAILED => 0xFFFFFFFF |
기타:
사용할수 있는 핸들 오브젝트
•변경 통지(Change notification)
•콘솔 입력(Console input)
•이벤트(Event)
•Memory resource notification
•뮤텍스(Mutex)
•프로세스(Process)
•세마포어(Semaphore)
•스레드(Thread)
•대기 가능한 타이머(Waitable timer)
참조: Signaled 상태란?
기타 참조: MSDN 라이브러리의「Synchronization Objects」
'Programming' 카테고리의 다른 글
인코딩 타입 알아내기 (0) | 2011.10.04 |
---|---|
64비트 포팅에 주의 사항 (0) | 2011.10.04 |
아파치 웹브라우저에서 디렉토리 리스트 보이는 설정관련 (0) | 2011.09.18 |
IIS에 Ruby 사용 (0) | 2011.09.18 |
윈도우 바로가기 관련 (0) | 2011.09.16 |
RECENT COMMENT