블로그 이미지
LanSaid

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Recent Post

Recent Comment

Recent Trackback

Archive

2012. 10. 11. 19:21 Study/WinAPI

예제 : SemDown, SemaphoreThree

*세마포어 : 한정된 갯수의 자원을 여러 스레드가 사용하려고 할때 접근 제한(서로다른 프로세스에 속한 스레드에도 사용 가능, 운영체제 소유이기 때문-커널객체)
 1) 세마포어 객체가 사라지는 시점 - 발급해준 모든 핸들을 반환 받았을때(closeHandle()) 마지막 핸들이 반환 되면 세마포어 객체도 사라짐.
 2) 세마포어 객체 핸들 - 처음 생성된 핸들
HANDLE hSem;
hSem=CreateSemaphore(보안속성, 초기값(허용 갯수?), 최대 값(최대 갯수?), 사용자 지정 이벤트 이름);
 1) 3번째 인자는 시스템 전체를 기준으로 유일한 키값이 됨.
 2) 동일한 이름의 키값으로 세마포어를 생성하면 두번째 부터 실행되는 CreateSemaphore()에서 지정한 초기값은 무시되고 기존에 만들었던 세마포어 객체를 공유 사용


WaitForSingleObject(hSem,INFINITE); 세마포어 객체가 들어오면 세마포어 갯수가 0보다 클 경우 1씩 감소 시킴(-1)
ReleaseSemaphore(세마포어 핸들, 증가시킬 세마포어의 수, NULL);  단, 2번째 인자 값은 세마포어 최대 수를 넘을 경우 동작하지 않음

posted by LanSaid