목차
○ OS 세 번째 과제.
1) mutex locks 을 이용하여 프로그래밍한 소스코드.
<<출력결과>>
2) Semaphore를 이용하여 프로그래밍한 소스코드.
<<출력결과>>
1) mutex locks 을 이용하여 프로그래밍한 소스코드.
<<출력결과>>
2) Semaphore를 이용하여 프로그래밍한 소스코드.
<<출력결과>>
본문내용
cout << \" \" << arr[i] << \" \";
}
cout << endl<
//메인 쓰래드.
//매인 쓰래드와 Thread_1이 count 값이 일정값에 도달할때까지 계속적으로 실행.
while(1)
{
count++;//while문을 빠져나오기 위한 조건.
if (count>10)
{
break;
}
produced_data = rand() % 100 + 1;//값을 radom하게 생성 (1~100사이의 정수).
WaitForSingleObject(Sem, INFINITE);//WaitForSingleObject 함수 호출 (세마포어>0일때 획득)
arr[pros] = produced_data;//배열에 생성된 값을 넣는다
pros = (pros + 1) % 10;//배열의 index값++
//생성값과 생성값을 넣은 배열 출력.
cout << \"produced data : \" << produced_data << endl ;
cout << \"array : \";
for(int i = 0; i< 10; i++)
{
cout << \" \" << arr[i] << \" \";
}
cout << endl <
Sleep(100);// consume을 기다림.
ReleaseSemaphore(Sem, 1, NULL);
}
CloseHandle(Sem); //Mutex handle 닫음.
return 0;
}
DWORD WINAPI thread_func_1(LPVOID para)//consume 수행.
{
int cons=0; //소비되어 빠질값의 배열index
while(1)
{
WaitForSingleObject(Sem, INFINITE); //WaitForSingleObject 함수 호출 (세마포어>0일때 획득)
int consumed_data = arr[cons];
arr[cons] = 0;//배열에 값을 빼고, 0을 넣는다.
cons = (cons + 1) % 10;//배열의 index값++
//소비한 값과 배열 출력.
cout << \"Consumed data : \" << consumed_data << endl;
cout << \"array : \";
for(int i = 0; i< 10; i++)
{
cout << \" \" << arr[i] << \" \";
}
cout<< endl <
ReleaseSemaphore(Sem, 1, NULL);
}
return 0;
}
<<출력결과>>
}
cout << endl<
//매인 쓰래드와 Thread_1이 count 값이 일정값에 도달할때까지 계속적으로 실행.
while(1)
{
count++;//while문을 빠져나오기 위한 조건.
if (count>10)
{
break;
}
produced_data = rand() % 100 + 1;//값을 radom하게 생성 (1~100사이의 정수).
WaitForSingleObject(Sem, INFINITE);//WaitForSingleObject 함수 호출 (세마포어>0일때 획득)
arr[pros] = produced_data;//배열에 생성된 값을 넣는다
pros = (pros + 1) % 10;//배열의 index값++
//생성값과 생성값을 넣은 배열 출력.
cout << \"produced data : \" << produced_data << endl ;
cout << \"array : \";
for(int i = 0; i< 10; i++)
{
cout << \" \" << arr[i] << \" \";
}
cout << endl <
ReleaseSemaphore(Sem, 1, NULL);
}
CloseHandle(Sem); //Mutex handle 닫음.
return 0;
}
DWORD WINAPI thread_func_1(LPVOID para)//consume 수행.
{
int cons=0; //소비되어 빠질값의 배열index
while(1)
{
WaitForSingleObject(Sem, INFINITE); //WaitForSingleObject 함수 호출 (세마포어>0일때 획득)
int consumed_data = arr[cons];
arr[cons] = 0;//배열에 값을 빼고, 0을 넣는다.
cons = (cons + 1) % 10;//배열의 index값++
//소비한 값과 배열 출력.
cout << \"Consumed data : \" << consumed_data << endl;
cout << \"array : \";
for(int i = 0; i< 10; i++)
{
cout << \" \" << arr[i] << \" \";
}
cout<< endl <
}
return 0;
}
<<출력결과>>
키워드
추천자료
서비스 운영관리 사례 분석-BBQ와 KFC의 성공과 실패사례.
[지방분권] 지방재정의 실태와 문제점 및 지방재정 운영의 개선적 방안
싱가포르 경제운영 체제와 희소성 극복
[학교장][교장][학교장상][학교경영][학교운영]학교장의 역할, 학교장의 조건, 학교장의 교직...
건강보험 제도 운영상 문제점 및 개선방안
[지방환경행정]지방환경행정의 필요성, 지방환경행정의 실태와 지방환경행정의 문제점, 지방...
WTO 체제의 개관
우리나라 공업교육의 체제와 현황, 공업교육의 과정
운영전 연구- 여성 인물을 중심으로 -
북한의 수산정책과 관리 및 운영체제
북한의 농업구조의 특성과 북한 농업의 관리조직 및 운영체계
소련 체제의 특징 (새로운 러시아 사람들)
소개글