Многопоточные приложения в Visual Studio.NET. Разработка приложения, демонстрирующего многопоточность для одного процессора
Автор работы: Пользователь скрыл имя, 09 Декабря 2013 в 22:08, курсовая работа
Описание работы
Современные операционные системы (OC) нацелены на наиболее эффективное использование ресурсов компьютера. По большей части эффективность достигается за счет разделения ресурсов компьютера между несколькими процессами. Многопоточность является естественным продолжением многозадачности, точно также как виртуальные машины, позволяющие запускать несколько ОС на одном компьютере, представляют собой логическое развитие концепции разделения ресурсов. В многопоточном приложении одновременно работает несколько потоков. Иногда вместо термина "поток" используется термин "нить". Потоки – это независимые друг от друга задачи, выполняемые в контексте процесса. Поток использует код и данные родительского процесса, но имеет свой собственный уникальный стек и состояние процессора, включающее указатель команд.
Содержание работы
РЕФЕРАТ…………………………………………………….…………
4
СПИСОК СОКРАЩЕНИЙ…………………………………………….
5
СОДЕРЖАНИЕ…………………………………………………………
6
ВВЕДЕНИЕ…………………………………………………………….
7
1 КОНЦЕПЦИЯ МНОГОПОТОЧНОСТИ……………………………
9
2 БИБЛИОТЕКА ПАРАЛЛЕЛЬНЫХ ЗАДАЧ (TPL) ………………..
11
2.1 Основные нововведения TPL……………………………………
11
2.2 Параллелизм данных……………………………………………
17
2.3 Параллелизм задач……………………………………………….
20
2.4 Потенциальные ошибки, связанные с параллелизмом
данных и задач……………………………………………………
21
3 СОЗДАНИЕ МНОГОПОТОЧНОГО ПРИЛОЖЕНИЯ В СРЕДЕ
VISUAL STUDIO.NET………………………………………………
23
3.1 Структурная схема программы …………………………………
23
3.2 Разработка и оптимизация кода программы на C#…………….
25
4 ТЕСТИРОВАНИЕ ПРИЛОЖЕНИЯ………………………………..
30
ЗАКЛЮЧЕНИЕ………………………………………………………..
35
Литература…………………………………………………………
Файлы: 1 файл
Курсяк C#.docx
— 192.86 Кб (Скачать файл)Министерство образования и науки РФ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ
УНИВЕРСИТЕТ»
(ФГБОУ ВПО «ВГТУ»)
Факультет вечернего и заочного обучения
Кафедра «Автоматизированные и вычислительные системы»
Специальность «Вычислительные машины, комплексы,
системы и сети»
КУРСОВОЙ ПРОЕКТ
по дисциплине «Программирование на С/С++»
Тема: «Многопоточные приложения в Visual Studio.NET. Разработка приложения, демонстрирующего многопоточность для одного процессора»
Расчетно-пояснительная записка
Разработал студент
гр. ВМ-101
подпись, дата инициалы, фамилия
Руководитель
подпись, дата инициалы, фамилия
Нормоконтролер
подпись, дата инициалы, фамилия
Защищен ________________ Оценка ___________________
дата
Воронеж 2012
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РФ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ
УНИВЕРСИТЕТ»
(ГБОУВПО «ВГТУ»)
Кафедра «Автоматизированные и вычислительные системы»
ЗАДАНИЕ
на курсовой проект
по дисциплине «Программирование на С/С++»
Тема проекта: «Многопоточные приложения в Visual Studio.NET. Разработка приложения, демонстрирующего многопоточность для одного процессора.»
Студент группы ВМ-101 Гулевский Алексей Владимирович
фамилия, имя, отчество
Номер варианта___7__________________
Технические условия: разработать в среде программирования Visual Studio .NET многопоточное приложение.
Содержание и объем проекта (графические работы, расчеты и прочее): изучение технологии создания многопоточных приложений, проектирование интерфейса, построение приложения, проведение тестирования, анализ полученных результатов, составление расчетно-пояснительной записки, электронной презентации по теме проекта.
Сроки выполнения этапов: анализ задачи, обзор литературы, выбор технологии разработки – до 15.10.2012 г., проектирование, реализация – до 20.11.2012 г., отладка приложения, анализ результатов до 05.12.2012 г., оформление расчетно-пояснительной записки, составление электронной презентации – до 15.12.2012 г.
Срок защиты курсовой работы ____________25.12.2012 г._______
Руководитель
подпись, дата инициалы, фамилия
Задание принял студент гр. ВМ-101 / А.В. Гулевский /
подпись, дата инициалы, фамилия
ЗАМЕЧАНИЯ РУКОВОДИТЕЛЯ
РЕФЕРАТ
Пояснительная записка 39 с., 7 рисунков, 6 источников, 1 приложение.
Ключевые слова: VISUAL STUDIO .NET, C++, С#, МНОГОПОТОЧНОСТЬ, TRADE.
Объект исследования или разработки – многопоточное приложение, построенное в среде Visual Studio .NET.
Цель работы – изучить технологию создания многопоточных приложений в современных системах программирования.
Метод исследования и аппаратура – интегрированная среда разработки приложений Visual Studio .NET, программное моделирование на ЭВМ.
Полученные результаты – приложение,
демонстрирующее
Основные конструктивные, технологические и технико-эксплуатационные характеристики – персональная ЭВМ с емкостью оперативной памяти не меньше 512 Мб, оснащенная Windows XP и выше.
Степень внедрения – применена технология разработки многопоточных приложений в среде Visual Studio .NET, создан программный продукт.
СПИСОК СОКРАЩЕНИЙ
OC – Операционная система
API - application programming interface
TPL – System Threading Tasks
HTML - HyperText Markup Language
URL - Uniform Resource Locator
СОДЕРЖАНИЕ
РЕФЕРАТ…………………………………………………….…… |
4 |
СПИСОК СОКРАЩЕНИЙ………………………………… |
5 |
СОДЕРЖАНИЕ…………………………………………………… |
6 |
ВВЕДЕНИЕ………………………………………………………… |
7 |
1 КОНЦЕПЦИЯ МНОГОПОТОЧНОСТИ…………………………… |
9 |
2 БИБЛИОТЕКА ПАРАЛЛЕЛЬНЫХ ЗАДАЧ (TPL) ……………….. |
11 |
2.1 Основные нововведения TPL…………………………………… |
11 |
2.2 Параллелизм данных…………………………………………… |
17 |
2.3 Параллелизм задач………………………………………………. |
20 |
2.4 Потенциальные ошибки, связанные с параллелизмом |
|
данных и задач…………………………………………………… |
21 |
3 СОЗДАНИЕ МНОГОПОТОЧНОГО ПРИЛОЖЕНИЯ В СРЕДЕ |
|
VISUAL STUDIO.NET……………………………………………… |
23 |
3.1 Структурная схема программы ………………………………… |
23 |
3.2 Разработка и оптимизация кода программы на C#……………. |
25 |
4 ТЕСТИРОВАНИЕ ПРИЛОЖЕНИЯ………………… |
30 |
ЗАКЛЮЧЕНИЕ…………………………………………………… |
35 |
Литература…………………………………………………… |
36 |
Приложения ………………………………………………………. |
37 |
ВВЕДЕНИЕ
Современные
операционные системы (OC) нацелены на наиболее
эффективное использование
Потоки
часто становятся источниками
программных ошибок особого
1 КОНЦЕПЦИЯ МНОГОПОТОЧНОСТИ
Фундаментальными понятиями, связанными
с многопоточным
Важную роль в параллельном программировании
играет понятие процесса. Процессом
часто называют экземпляр выполнения
программы. И, порой, кажется, что
понятия процесса и программы
практически одинаковы, но на самом
деле они отличатся на фундаментальном
уровне. Если программа представляет
собой статический набор
Другим фундаментальным
Потоки, работающие параллельно в одном процессе, разделяют не только адресное пространство, но и открытые файлы, и множество других ресурсов. Процессы же, исполняющиеся параллельно, совместно используют физическую память, диски и другие ресурсы. Нетрудно заметить некую аналогию в работе процессов и потоков. Более того, потоки унаследовали некоторые свойства процессов, из-за чего их довольно часто называют «упрощенные процессы». В связи с существованием потоков появился термин многопоточность. Многопоточносью называют свойство платформы или приложения, заключающееся в том, что порожденный в операционной системе процесс может состоять из нескольких потоков, выполняющихся без предписанного порядка во времени, т.е. параллельно.
Необходимо сделать оговорку, что многопоточность в различных системах реализуется не только конкретными API-интерфейсами, но и самими подходами к ее организации. В рамках данной курсовой работы будет рассматриваться многопоточность исключительно в Windows-системах.
Конечно же, один процессор может
исполнять только один поток инструкций,
и именно поэтому «подлинная»
многопоточность, когда потоки команд
исполняются действительно
Нельзя сказать, что потоки, выполняющиеся
в одном процессе, являются независимыми.
Они имеют одно и то же адресное
пространство, что допускает возможность
совместного использования
2 БИБЛИОТЕКА ПАРАЛЛЕЛЬНЫХ ЗАДАЧ (TPL)
Как уже упоминалось ранее, одним из наиболее важных средств, внедренных в версию 4.0 среды .NET Framework, является библиотека параллельных задач или Task Parallel Library (или TPL). Эта библиотека вносит немало изменений, касающихся параллельного программирования. Данные изменения касаются как основ организации многопоточности в C#, так и «поверхностных» нововведений, таких как изменение или введение новых методов, которые значительно упрощают процесс создания многопоточного приложения.
Очень важно обратить внимание на
то, что средства, предоставляемые
библиотекой параллельных задач, не
являются полным замещением стандартного
механизма реализации многопоточности,
а лишь дополняют его. Практически
все стандартные механизмы
2.1 Основные нововведения TPL
Библиотека TPL определена в пространстве имен System.Threading.Tasks.
Следует обратить внимание, что очень часто в программу включают и класс System.Threading. Это обусловлено тем, что использование библиотеки TPL для организации многопоточной обработки является рекомендуемым, но не обязательным. Построение многопотчного приложения с использованием класса Thread по-прежнему находит широкое применение. Более того, библиотека параллельных задач имеет ряд существенных недостатков, о которых в дальнейшем будет рассказано более подробно. Эти недостатки могут быть устранены стандартными методами организации многопоточности.
В основу TPL положен класс Task (определен в пространстве имен System.Threading.Tasks), и элементарная единица исполнения инкапсулируется средствами этого класса, а не класса Thread. Одно из фундаментальных отличий библиотеки параллельных задач заключается в том, что класс Task не инкапсулирует поток исполнения, как это делает класс Thread. Класс Task является абстракцией, представляющей асинхронную операцию, но в некотором роде задача сама по себе напоминает создание потока.