Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Теория потоков




Потоки

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

Домашнее задание и методические указания по его выполнению

Используемое оборудование

Содержание работы

Общее описание работы

Изучение потоков

Лабораторная работа № 5

Контрольные вопросы

Отчет по лабораторной работе должен содержать

УКАЗАНИЯ ПО ОФОРМЛЕНИЮ ОТЧЕТА

ПО ЕГО ВЫПОЛНЕНИЮ

4.1. Лабораторное задание:

 

Согласно варианту задания, полученному при выполнении лабораторной работы № 1, написать программу.

 


И КОНТРОЛЬНЫЕ ВОПРОСЫ

 

 

 

1. Наименование.

2. Цель работы.

3. Используемое оборудование.

4. Теоретическая часть.

5. Распечатка программного кода вашей программы.

6. Выводы по проделанной работе.

 

 

1. Как можно обратиться к таблице?

2. Как добавить таблицу?

3. Как узнать количество столбцов и строк в таблице?

4. Как изменить ширину и высоту ячейки?

5. Как добавить в таблицу строку и столбец?


 

 

1.1. Цель работы: состоит в изучении принципов создания потоков и работы с ними.

 

 

Лабораторная работа состоит из домашнего и лабораторного заданий. Домашнее задание заключается в изучении принципов создания потоков и работы с ними. Лабораторное задание включает написание программы на языке Delphi с выполнением всех изученных в домашнем задании данных.

 

 

Для выполнения лабораторной работы используются программно-аппаратные средства: ПЭВМ класса Pentium стандартной конфигурации, цветной монитор с графическим адаптером VGA и выше, объем оперативной памяти не менее 64 Мб, ОС Windows 98 и выше, не менее 40 Mb свободного объема на жестком диске.

 

 

По методическому руководству ознакомиться с принципами работы с потоками в языке программирования Delphi 6.

 

 

Операционная система Windows является многопоточной. Это значит, что она может выполнять несколько задач одновременно. Здесь употребляется термин «задач», потому что одна программа может состоять из нескольких независимых блоков кода, которые тоже могут выполняться одновременно. Каждый такой блок называется потоком. Когда вы запускаете новое приложение, то для него автоматически создаётся главный поток, в котором и будет выполняться код программы. Но это не значит, что вы ограничены этим потоком. В любой момент вы можете создать дополнительные потоки, которые будут выполняться параллельно с главным. Таким образом можно добиться многозадачности внутри самой программы.

 

 

Мы говорим о потоках и ещё ни слова не сказали о том, зачем же нужно разделять программу на несколько потоков. В предыдущей главе мы работали с такой программой как Word, и сейчас снова приведем пример, основанный на работе этой программы. Когда вы запускаете Word и набираете текст, то встроенный модуль проверки орфографии автоматически следит за тем, что вы пишете, и подправляет орфографические ошибки. Теперь представьте логику проверки. После нажатия кнопки нужно отобразить на экране нужную букву, затем проверить ближайшие слова на изменения и проверить правильность их написания. После проверки слов, проверять всё предложение на наличие пропущенных запятых или других знаков. На словах алгоритм описывается достаточно просто. Но попробуйте представить себе тот большой труд, который надо проделать после каждого нажатия кнопки. Если бы алгоритм проверки орфографии действительно действовал бы так, то буквы появлялись бы на экране не чаще 1 в пару секунд. Однако проверка орфографии работает отдельным процессом. Вы спокойно набираете текст, а проверка идёт в отдельном потоке, не мешая вам работать с текстом. При этом практически незаметны задержки, и нет никаких неудобств. Когда ты пишешь новую программу, то не надо пытаться вывести все функции в отдельные потоки. Каждый поток накладывает на программу дополнительную сложность и неустойчивость, да и отлаживать потоки намного сложнее. Какой код нужно помещать в отдельный поток? Вот некоторые примеры:

1. Если какие-то функции должны выполняться параллельно основному процессу, то тут деваться некуда и нужно обязательно помещать такие вещи в поток.

2. Если какие-то расчёты идут достаточно долго, то многие считают, что их тоже нужно помещать в поток. Просто когда идут такие расчёты, программа блокируется и невозможно нажать кнопку «Отмена» или что-нибудь подобное. Это неправильное утверждение. Поток тут абсолютно необязателен, потому что можно обойтись и без него. Достаточно внутри расчётов поставить вызов Application.ProcessMessages, и в этом месте выполнение расчётов будет прерываться на некоторое время и программа будет обслуживать другие сообщения, пришедшие от пользователя. Таким образом получится простой эффект многозадачности без использования потока.

3. Код критичен к времени выполнения. Допустим, что ваша программа должна принимать какие-то данные по COM порту. Как только на порт пришли какие-то данные, они должны быть моментально обработаны с минимальной задержкой. Вот такие вещи желательно выносить в отдельный поток, потому что если в момент поступления данных программа занята большими расчётами, то данные могут оказаться необработанными. Истинную многозадачность можно получить только на многопроцессорных системах, где каждый процессор выполняет свою задачу. В домашних компьютерах в основном ставится только один процессор. Чтобы создать многозадачность на таких процессорах используют псевдомногозадачность. В этом виде один процессор выполняет сразу несколько задач благодаря быстрым переключениям между ними. Например, процессор может выполнять сразу десять задач, при этом каждой из них давать по 10 миллисекунд своего рабочего времени. В этом случае процессор будет через определённые промежутки времени переключаться между задачами, и у пользователя будет создаваться впечатление, что они выполняются параллельно. Но это общий вид псевдомногозадачности, реально она реализована по другому. В 32-х разрядных версиях Windows используется вытесняющая многозадачность (до этого была согласованная). В такой среде ОС разделяет процессорное время между разными приложениями и потоками на основе вытеснения. Разделение происходит в основном благодаря приоритету потока. У каждого потока есть приоритет, по которому определяется его важность. Чем выше приоритет, тем больше процессорного времени выделяется этому потоку. Потоки с одинаковым приоритетом будут получать одинаковое количество процессорного времени. У дополнительных потоков приоритет выставляется такой же как и у главного потока программы, но вы его можете увеличить или уменьшить. Чем выше приоритет потока, тем больше на него отводится процессорного времени. Снова допустим, что ваша программа должна принимать какие-то данные по COM порту и сразу же их обрабатывать. Для этого создаём новый поток, в нём реализуем код получения и обработки данных. Теперь достаточно поднять приоритет потока, чтобы на него при необходимости выделялось больше процессорного времени, и задача решена.

Теперь, как только поступают на СОМ порт новые данные, поток сразу же обработает их, потому что с более высоким приоритетом он получит больше процессорного времени.





Поделиться с друзьями:


Дата добавления: 2015-03-29; Просмотров: 403; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.