ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 22.08.2024
Просмотров: 47
Скачиваний: 0
tmp="M"+IntToStr(ind-1);
M[1] = CreateMutex(NULL, false, tmp.c_str()); }
inttimeforeat=random(2000)+8000; //общее время для приема пищи
int period; //время на одноразовый прием пищи
DWORD Result;
do
{period=random(2000)+3000;
ToServer(3, ind, hPipe); //философ хочет есть
do
Result = WaitForSingleObject(M[0], 100); //пытается взять первую вилку
while (Result == WAIT_TIMEOUT); //пока не возьмет
do
Result = WaitForSingleObject(M[1], 100); //вторую
while (Result == WAIT_TIMEOUT); //пока не возьмет
ToServer(2, ind, hPipe); //сообщает, что начал есть
if (period>timeforeat) period=timeforeat; //если время на еду больше, чем общее время
//оставшееся до насыщения, переприсваиваем
timeforeat-=period; //уменьшаем время оставшееся до насыщения
Sleep(period); //ест
ReleaseMutex(M[0]); //кладет вилки
ReleaseMutex(M[1]); //мьютексы свободны
ToServer(1, ind, hPipe); //сообщает, что начал думать
Sleep(random(2000)+3000); //думает
} while (timeforeat>0);
ToServer(0, ind, hPipe); //окончание работы
CloseHandle(hPipe);
return 0;}
Рисунок 3 – Пример работы программы
3 Список использованных источников
1. Е. В. Рабинович . Теория вычислительных процессов.– Новосибирск :Издательство НГТУ–2007.–262 c.
2. Фундаментальное обучение информатике[Электронный ресурс].
Режим доступа: http://ric.uni-altai.ru/Fundamental/moi2/upr0/theory4.htm
Дата доступа: 23.12.2012
3. Блог об учебе[Электронный ресурс].
Режим доступа: http://educode.ru/article/translyacionnaya-semantika-2/
Дата доступа: 23.12.2012