세마포어를 이용한 프로그램
- 최초 등록일
- 2005.09.17
- 최종 저작일
- 2005.09
- 압축파일
- 가격 1,500원
소개글
고속도로 톨게이트를 통과할 때 한대의 차량만이 통과한다는 것을 우리는 알고 있습니다.
이것을 semaphore에 적용해보면 우리가 일반적으로 생각한대로 한대의 차량만이 나가지만, semaphore를 적용하지 않은 프로그램은 모든 차량이 한꺼번에 통과를 해서 우리가 생각한 결과와는 전혀 다르게 나옵니다.
그래서 저는 이것을 semaphore를 적용한 것과 적용하지 않았을 때를 프로그램으로 작성하였으니 참고하세요..
컴파일 실행환경
visual studio에서 실행하시면 됩니다.
실행시키면 Yes/No선택이 나오게 되는데
Yes일 경우 semaphore를 이용한 결과가 나오고
No일 경우 semaphore를 이용하지 않은 결과가 나옵니다.
본문내용
#include <windows.h>
#include <stdio.h>
#include<time.h>
#define Time 1000
HANDLE hSemaphore;
bool NowTolgateUse;
int SemUse = 1, AnotherCar = 1;
char Name[10][10]={"소나타", "옵티마", "그랜져", "마티즈", "코란도", "아반때", "티 코", "아우디","싼타페","에쿠스"};
int YesNoCheck(char);
clock_t start, end;
DWORD WINAPI UseTolgate1(LPVOID arg)
{
DWORD dwThreadId = GetCurrentThreadId();
start=clock();
printf("%s가 톨게이트에 들어가려고 대기중 입니다.\n",Name[0]);
if(SemUse)
{
WaitForSingleObject( hSemaphore, INFINITE);
//지정된 오브젝트가 신호상태에 있거나 타임아웃 인터벌경과일때 반환한다.
//INFINTE로 지정한다면 함수의 타임아웃 간격은 결코 경과하지 않는다
}
Sleep(Time);
printf("%s가 톨게이트에 들어가려고 시도합니다.\n",Name[0]);
압축파일 내 파일목록
Semaphore2.dsp
Semaphore2.ncb
Semaphore2.plg
Semaphore2.cpp
Semaphore2.dsw
Semaphore2.opt
Debug/vc60.idb
Debug/vc60.pdb
Debug/Semaphore2.pch
Debug/Semaphore2.obj
Debug/Semaphore2.ilk
Debug/Semaphore2.exe
Debug/Semaphore2.pdb
참고 자료
없음