SoftCraft
разноликое программирование

Top.Mail.Ru

Архитектура ВС. Многопоточность


Начальная страница курса

Задание для самостоятельной работы

Дедлайн: 15.12.2021 23:59

Цели и задачи: Изучить работу с потоками. Научиться разбивать задачу на части, для последующего их выполнения различными потоками.

  1. В соответствии с новым выданным вариантом задания разработать консольное приложение с использованием библиотеки POSIX Threads языка программирования C или стандартной библиотеки языка программирования C++. Программа должна быть написана на языке C или C++, компилироваться и выполняться в ОС Lnux. Стиль написания программы - свободный.

  2. Выбрать модель приложения, наиболее точно отвечающую специфике задачи или применить указанную. Изучить используемую модель по дополнительным источники информации и привести в пояснительной записке ее описание.

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

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

  5. Отчет должен содержать титульный лист с идентификацией студента, номер варианта, описание задачи.

  6. В отчете необходимо подробно описать используемую модель вычислений. Привести источники информации, в которых описана данная модель.

  7. Для удобства ввод-вывод данных можно организовать с использованием файлов и (или) использовать аргументы командной строки. При этом способы ввода, должны быть тщательно документированы и понятны пользователю программы. Описание работы с данными программы должно быть приведено в отчете и сопровождаться соотвтетсвующей информацией при работе с программой.

  8. Для порождения массивов данных допускается использовать генераторы случайных чисел. При этом генераторами случайных чисел должны порождаться семантически корректные данные.

  9. В ходе выполнения программа должна выводить в консоль все события, доступно (в терминах предметной области) объясняющие последовательность моделируемых действия. При необходимости нужно выводить модельное время, формируемое на основе принятых единиц его измерения.

  10. При решении задачи обязательно использовать синхропримитивы из указанных в условии (если они указаны).

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


Начальная страница курса