- •Аннотация
- •1.3 Исходный данные:
- •1.4 Технические требования
- •3.4 Функция thread_func_c
- •3.5 Функция thread_func_d
- •3.6 Функция thread_func_e
- •4. Разработка программы
- •Список использованной литературы
- •1 Назначение программы
- •2 Условия выполнения программы
- •3 Выполнение программы
- •4 Сообщения оператору
- •Аннотация
1.3 Исходный данные:
OS GNU/Linux
Компилятор С (gcc)
1.4 Технические требования
Для работы приложения необходимо следующее:
- 64 МВ ОП
- Наличие ОС Unix (Linux)
- Процессор класса Pentium с частотой не менее 200 МГц
1.5 Специальные технические требования
Компьютер с установленной на нем ОС Unix (Linux) – для отладки программы, написанной на языке С.
Компилятор С – для компиляции программы на языке С (gcc,gc).
2 Разработка структуры программы
В соответствии с техническим заданием программа должна реализовывать следующие функции:
Расчет факториала
Расчет бесконечно убывающей геометрической прогрессии
Расчет суммы числового ряда
На рисунке 1 представлена структура разрабатываемой программы, включающая в себя функцию main главного процесса, порождающую другие процессы.
Рисунок 1 Структурная схема программы
3 Разработка Алгоритмов основных функций
3.1 Главная функция (main)
Главная функция (main) – функция, с которой начинается выполнение программы.
Эта функция осуществляет создание потоков A, B и Е, производит проверку завершения каждого из созданных потоков. Производит корректное удаление семафоров. Алгоритм главной функции представлен на рисунке 2.
Рисунок 2 Алгоритм главной функции
3.2 Функция thread_func_A
Функция thread_func_A предназначена для выполнения подсчета функции факториала числа 32 и вывода полученного значения на экран. Также этой функцией производится запуск потока С.
Алгоритм функции представлен на рисунке 3
Рисунок 2 Алгоритм функции thread_func_A
3.3 Функция thread_func_В
Функция thread_func_В
выполняет подсчет числового ряда типа
-1, +2, -3, +4… и вывода полученного значения
на экран. Также этой функцией производится
запуск потока D. А
лгоритм
функции представлен на рисунке 3.
Рисунок 3: Алгоритм функции thread_func_В
3.4 Функция thread_func_c
Функция thread_func_C выполняет подсчет первых 30 членов геометрической прогрессии 1, ½, ¼….Алгоритм функции представлен на рисунке 4.
Рисунок 4 Алгоритм функции thread_func_C
3.5 Функция thread_func_d
Функция thread_func_D выполняет подсчет первых 1.000.000 членов прогрессии 1, ½, 1/3, ¼ … Алгоритм функции представлен на рисунке 5.
Рисунок 5 Алгоритм функции thread_func_D
3.6 Функция thread_func_e
Функция thread_func_D выполняет подсчет первых 1.000.000 членов прогрессии ½, 1/6, 1/8, 1/10 … Алгоритм функции представлен на рисунке 6.
Рисунок 6 Алгоритм функции thread_func_E
4. Разработка программы
Разработанные алгоритмы функций были реализованы на языке С.
При разработке данной программы были использованы стандартные функции:
pthread_create – функция создание потока
pthread_join – функция проверки завершения потока
printf – функция вывода сообщения на экран
perror – функция вывода сообщения в стандартный поток ошибок
sem_init – функция инициализации семафора
sem_post – функция увеличивает значение семафора на 1
sem_wait – функция останавливает вызвавший ее поток, до тех пор, пока значение семафора не станет больше нуля
sem_destroy – функция для удаления семафора
При разработке программы были использованы переменные, приведенные в таблице 1
Таблица 1 – Переменные, использованные в программе
Имя |
Тип |
Назначение |
sem,sem_B, sem_C,sem_C2 |
sem_t |
Переменные-семафоры, служащие для синхронизации потоков |
result |
int |
Переменная для проверки создания потока |
thread_A, |
pthread_t |
Переменная-идентификатор потока А |
thread_B, |
pthread_t |
Переменная-идентификатор потока B |
thread_C, |
pthread_t |
Переменная-идентификатор потока C |
thread_D, |
pthread_t |
Переменная-идентификатор потока D |
thread_E; |
pthread_t |
Переменная-идентификатор потока E |
sum |
float |
Переменная для подсчета суммы в функциях |
i |
float |
Переменная для подсчета итераций цикла |
ЗАКЛЮЧЕНИЕ
В курсовой работе были изучены методы создания многопоточных приложений с использованием языка C для OS GNU/Linux.
Построены алгоритмы и структура программы многопоточного приложения. Полученная программа синхронизирует выполнение вычислительных процессов. Данная программа реализована на языке С, исполняемый файл занимает 13849 байт, в приложении приведена разработанная документация (спецификация, руководство оператора и текст программы)
