검색어 입력폼

Peterson 알고리즘을 이용한 상호배제

저작시기 2007.01 |등록일 2007.03.31 파일확장자압축파일 (zip) | 가격 500원

소개글

/*global variable 선언*/
volatile double shared_var = 0.0; //thread가 변경시킬 변수는 volatile로 지정한다.

전역변수인 shared_var 변수를 두개의 스레드가 상호 배제 하면서, 자원을 공유하는 프로그램.

Peterson 알고리즘을 이용하여, 상호배제 실현

컴파일 실행환경

Visual Studio 6.0

본문내용

<b>df.cpp
main.c
main.dsp
main.dsw
main.ncb
main.opt
main.plg</b>

=============================================================

#include<stdio.h>
#include<windows.h>
#include<process.h>
#include<stdlib.h>

#define MAX 100

HANDLE hMutex;

char thread1[]="A";
char thread2[]="B";
int Buffer[MAX];

int iIndex=0;
int iRecordCnt;

unsigned _stdcall Product(void *arg)
{
while(1)
{
WaitForSingleObject(hMutex, INFINITE);
printf("Producer Thread:%s \n",(char *)arg);
iRecordCnt=0;
for(int i=0; i<10; i++)
{
Sleep(100);
Buffer[iIndex++]=(int)(rand()%50);
iRecordCnt++;
printf("생산Data : %d \n",Buffer[iIndex-1]);
}
ReleaseMutex(hMutex);
}
return 0;
}

unsigned _stdcall Consumer(void *arg)
{
int * pBuff=Buffer;

while(1)
{
WaitForSingleObject(hMutex,INFINITE);
printf("Consumer Thread:%s \n",(char *)arg);
for(int i=0; i<iRecordCnt; i++)
{
Sleep(100);
printf("소비 Data: %d \n", Buffer[iIndex-1]);
pBuff++;
iIndex--;
}

iIndex=0;
puts("모두소비함");
ReleaseMutex(hMutex);

압축파일 내 파일목록

df.cpp
main.dsp
main.ncb
main.plg
main.c
main.dsw
main.opt
Debug/vc60.idb
Debug/vc60.pdb
Debug/main.pch
Debug/main.obj
Debug/main.ilk
Debug/main.exe
Debug/main.pdb
다운로드 맨위로