АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Описание глобальных переменных

Читайте также:
  1. III. Описание мнении (doxography)
  2. А. Общее описание
  3. А. Общее описание
  4. А. Общее описание
  5. Библиографическое описание
  6. Динамическое описание систем
  7. Дифференциал функции нескольких переменных.
  8. Идея гармонии в контексте глобальных проблем современности
  9. К теме 8 – Человечество перед лицом глобальных проблем.
  10. Кинематика (описание движений)
  11. Класс A1 - В общем верификация означает подтверждение того, что описание проекта полностью соответствует спецификации (техническому заданию) проектируемой системы.
  12. Константа Описание Примеры

В данном разделе приведены описания глобальных переменных, используемых в программе:

int BornNum; // общая область для всех потоков

int BornHorseDest; // город в котором рождается лошадь

int BornCowboyDest; // город, где рождается ямщик

int BornCowboyNumber; // номер ямщика, с которым он рождается

HANDLE hmtx; //семафор

BOOL hflag; // лошадиный флаг

int dest; // номер города.

 


Принцип работы

Программа состоит из следующий функций:

1 void horsethread(void *arg)

Данная функция отвечает за лошадей.

Сначала описывается, какая лошадь, в какой город едет. Затем в бесконечном цикле while (TRUE) происходит подготовка лошадей к поездке в город. В цикле while (horses[num].hflag) происходит перемещение лошадей вместе с ямщиками. Если условия данного цикла выполняются, то это означает, что лошадь прибыла в нужный город и отдыхает. За это отвечает WaitForSingleObject(horses[num].hmtx, INFINITE). Выполнение ReleaseMutex(horses[num].hmtx) говорит о том, что лошадь отдохнула, готова ехать дальше и цикл повторяется по-новой.

2 void cowboythread(void *arg)

Данная функция отвечает за ямщиков.

Внутри данной функции при помощи srand(time(NULL)) и next=(rand()%7)+1 происходит случайное распределение, какой ямщик, в какой город поедет.

Далее также происходит бесконечный цикл while (TRUE). Когда hflag=FALSE выводится сообщение о том, что ямщик занял лошадь. Когда ямщик добрался до нужного ему города hflag=TRUE

Void main(void)

Основная функция программы.

В ней происходит непосредственное «рождение» лошадей и ямщиков. Она вызывает две предыдущие функции.


 

Разработка пользовательского интерфейса

Приложение представляет собой консольное окно, в котором выводятся сообщения о действиях программы, а точнее о перемещениях ямщиков,

При запуске приложения запускается консольное окно, в котором пользователю сообщается о том, какая лошадь в каком городе находится на начальном этапе и сообщения о готовности лошадей к отправке.

Далее происходит непосредственное перемещение ямщиков между городами. То есть ямщик выбирает лошадь, едет в какой-то город, там лошадь отдыхает и ямщик может взять другую лошадь и т.д.


Текст программы

Разработка приложения велась на языке C.

Листинг кода программы представлен в приложении А.


Заключение

Результатом курсовой работы является приложение с использованием основных принципов многопоточного программирования в соответствии с выбранным вариантом. В ходе тестирования была проверена правильность работы программы.

В ходе написания программы были усвоены основные принципы и методы разработки многопоточных программ.

 

 


1 | 2 | 3 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.)