C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[26220] Re:[질문] WaitForSingleObject 에 대해서 설명좀 해주세요.
임문환.실업자 [origin] 2682 읽음    2003-07-04 18:49
강영준 님이 쓰신 글 :
: 헬프 찾아 봤는데.. 찾지를 못하겠드라구요..
:
: bcb를 다시 설치 하면서 최소 설치를 했드니만.. 헬프가 잘 안뜨드라구요..
:
: WaitForSingleObject에 대해서 설명좀 해주세요.. 사용방법도 알려 주시면 고맙겠습니다.

세마포어를 사용한 예:

예를 들어, 자원이 2개인데 그 것을 사용하려하는 스레드가 3개 이상인 경우 그대로 방치하면 한 자원에 두 개 이상의 스레드가 동시에 읽기/쓰기를 할 가능성이 있음. 그렇게 되면 원하는 결과가 나오지 않게 됨.
이런 경우, 총 자원수가 몇 개이고 현재 사용할 수 있는 자원은 몇개인지를 관리해서 사용가능한 자원이 없다면 자원을 사용하려 하는 스레드는 기다려야 함. 이 역할을 하는 함수가 WaitForSingleObject임.

HANDLE Semaphore; //전역변수
Semaphore = CreateSemaphore(NULL,2,2,NULL); //프로그램 시작 시 또는 최초 사용시

WaitForSingleObject(Semaphore,INFINITE);//이 함수가 정상 반환되면 사용가능한 자원수가 1감소.
//여기에서 자원을 가지고 작업 수행
//2개의 자원 중 어떤 것이 사용중인지를 검사한 후
//사용중이지 않은 자원에 작업을 해야 함.
ReleaseSemaphore(Semaphore,1,NULL); //사용 가능한 자원수를 1 늘림.

CloseHandle(Semaphore); //프로그램 종료 시 또는 더이상 필요 없을 때

:
: 그리고 쓰래드의 헨들을 잡는 방법은 어떻게 되나요?
:
: 이넘을 쓰래드에 넣어 봤는데.. 전혀 반응이 없드군요..
:
:

TThread::Handle

+ -

관련 글 리스트
26218 [질문] WaitForSingleObject 에 대해서 설명좀 해주세요. 강영준 1397 2003/07/04
26220     Re:[질문] WaitForSingleObject 에 대해서 설명좀 해주세요. 임문환.실업자 2682 2003/07/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.