
- •Реферат
- •Содержание
- •Список сокращений и терминов
- •Введение
- •Раздел 1. Разработка многопоточных приложений
- •1.1. Потоки и многопоточность
- •1.2. Технология Intel tbb
- •Раздел 2. Алгоритм программы
- •2.1. Общий алгоритм программы
- •2.2. Алгоритм потока чтения
- •2.3. Алгоритм потока анализа
- •Раздел 3. Принципы реализации программы
- •3.1. Диаграмма классов
- •3.2. Основные библиотеки, использованные в программе
- •3.3. Основные функции, использованные в программе
- •Раздел 4. Экспериментальные исследования
- •4.1. Условия эксперимента
- •4.2. Описание эксперимента
- •4.3. Результаты эксперимента
- •4.4. Анализ результатов эксперимента
- •Список использованных источников
Раздел 2. Алгоритм программы
2.1. Общий алгоритм программы
Взаимодействие потоков чтения и анализа представлено на диаграмме последовательностей UML на рис.1. Главный поток выполняет параллельный запуск потоков чтения и анализа и создает отчет на основе полученных данных[5].
Рис.1 – UML диаграмма последовательности
Управляющий поток считывает ключи командной строки, а также проверяет их на ошибки. Далее происходит анализ командной строки. Поток инициализирует переменные и очищает их. Подготавливается защищенная очередь данных для хранения результатов предварительного разбора записей лога. А также подготавливается защищенная структура данных для хранения результатов анализа. Далее происходит запуск таймера и управляющий поток запускает потоки чтения файлов-логов и заполняет защищенную очередь. Запускаются потоки анализа данных, которые хранятся в защищенной очереди. Далее ожидается, пока все потоки будут завершены. После того, как потоки чтения и анализа завершены, таймер останавливается и выводятся результаты анализа, которые находятся в защищенной структуре.
Также существует подпрограмма проверки параметров командной строки, которая проверяет корректность указанных параметров, существование указанных файлов и доступность выбранных хранилищ данных для результатов анализа.
Распределение файлов-логов между процессами чтения и анализа осуществляется следующим образом: существует общая очередь, куда обращаются, по очереди, каждый процесс. После завершения обработки указанного файла-лога, происходит обращение к следующему и т.д., до тех пора в очереди не останется больше ни одного файла анализа.
Блок-схема управляющего потока представлена на рис.2.
Далее рассмотрим алгоритм для потока чтения.
Рис. 2. Блок-схема алгоритма управляющего потока
2.2. Алгоритм потока чтения
Поток чтения открывает файл-лог. Номеруются потоки чтения. После этого считывается директория в список для имен и имя файла-лога пока список имен файлов чтения не будет пуст. Проверяется корректность открытия. Далее происходит построчное считывание записей: разбор строки и заполнение структуры. Структура заносится в защищенное хранилище – строки с файла сохраняются в список для строк. После этого файл закрывается и поток завершается.
Рис.3. Блок-схема алгоритма потока чтения
Далее рассмотрим алгоритм потока анализа.
2.3. Алгоритм потока анализа
Поток анализа эксклюзивно захватывает доступ к защищенной очереди и проверяет на наличие записей в очереди. До тех пор, пока список строк не пуст и все потоки чтения завершены, из считанных строк вырезается IP-адрес, и если такой адрес присутствует в таблице, то увеличивается количество посещений с этого адреса в таблицу. Если существует необработанная запись, то поток анализирует запись и заносит в защищенную структуру результатов. После этого удаляет запись из очереди. Если же очередь пуста – поток завершается.
Рис. 4. Блок-схема алгоритма потока анализа
Раздел 3. Принципы реализации программы
Реализация приложения в данной курсовой работе выполнена на языке программирования С++ в IDE Microsoft Visual Studio 2010. Программа базируется на основе библиотек, классов, функций, методов и параметров этого языка программирования. Компилятор Visual C++. Программа разработана для архитектуры iа-32 (intel architecture) (x86).