рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Дополнительные возможности потоков

Дополнительные возможности потоков - раздел Электроника,   Глава 17. Потоки................................................

 

Глава 17. Потоки........................................................................................................................ 402

 

 

17.1 Теория потоков. .............................................................................................................. 403

 

17.2 Простейший поток ......................................................................................................... 404

 

17.3 Дополнительные возможности потоков. ..................................................................... 408

 

17.4 Подробней о синхронизации......................................................................................... 409

 

перационная система Windows является многопоточной. Это значит, что она может выполнять несколько задач одновременно.

Почему я говорю именно задач, а не программ? Да потому что одна программа может состоять из нескольких независимых блоков кода, которые тоже могут выполняться одновременно. Каждый такой блок называется потоком.

Когда ты запускаешь новое приложение, то для него автоматически создаётся главный поток, в котором и будет выполняться код программы. Но это не значит, что ты ограничен этим потоком. В любой момент ты можешь создать дополнительные потоки, которые будут выполняться параллельно с главным.

Таким образом можно добиться многозадачности внутри самой программы.

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

 

говорю о потоках и ещё ни слова не сказал о том, зачем же нужно разделять программу на несколько потоков. Я часто в этой книге привожу примеры на основе таких программ, как Word и Excel и сейчас снова пример основанный

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

На словах алгоритм описывается достаточно просто. Но попробуй представить себе тот большой труд, который надо проделать после каждого нажатия кнопки. Если бы алгоритм проверки орфографии действительно действовал бы так, то буквы появлялись бы на экране не чаще 1 в пару секунд.

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

Когда ты пишешь новую программу, то не надо пытаться засунуть все функции в отдельные потоки. Каждый поток накладывает на программу дополнительную сложность и неустойчивость, да и отлаживать потоки намного сложнее.

Какой код нужно помещать в отдельный поток? Вот некоторые пример:

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

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

3. 3. Код критичен к времени выполнения. Допустим, что твоя программа должна принимать какие-то данные по COM порту. Как только на порт пришли какие-то данные, они должны быть моментально обработаны с минимальной задержкой. Вот такие вещи желательно выносить в отдельный поток, потому что если в момент поступления данных программа занята большими расчётами, то данные могут оказаться необработанными.

 

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

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

У дополнительных потоков приоритет выставляется такой же как и у главного потока программы, но ты его можешь увеличить или уменьшить. Чем выше приоритет потока, тем больше на него отводится процессорного времени.

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

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

 

17.2 Простейший поток

авай попробуем написать простейший поток и в процессе познакомимся с его возможностями и как всё реализовано. На практике этот материал усваиваеться

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

Создай новый проект. Поставь на форму компонент ТRichEdit из палитры Win32 и один компонент TLabel. Нам ещё понадобиться пару кнопок – одна для запуска потока, другая для его остановки. Посмотри на рисунок 17.2.1, где показана моя форма. У тебя должно получиться нечто похожее.

Теперь создадим модуль для потока. Для этого выбери пункт меню File->New->Other для открытия окна создания нового модуля (рисунок 17.2.2). найди в этом окне на закладке New пункт Thread Object. Выдели его и нажми кнопку "ОК". Появляется окошко, как на рисунке 17.2.3. В этом окне нужно указать имя создаваемого потока. Я назвал свой поток TCountObj. Нажимай «ОК» и Delphi создаст модуль-заготовку для нашего будущего потока.

Сохрани весь проект. Главную форму под именем Main, а поток под именем MyThread.

Теперь посмотрим на код созданного для потока модуля:

unit MyThread;

Interface

uses Classes;

Type

TCountObj = class(TThread)

Private

{ Private declarations }
protected
procedure Execute; override;
end;

Implementation

{ Important: Methods and properties of objects in VCL can only be used in a method called using Synchronize, for example,

}

Synchronize(UpdateCaption);

and UpdateCaption could look like,

procedure TCountObj.UpdateCaption;
begin

Form1.Caption := 'Updated in a thread'; end; }

{ TCountObj }

Procedure TCountObj.Execute; begin

{ Place thread code here } end;

End.

Это новый поток. У объекта есть только одна процедура Execute. В любых потоках эта процедура обязана быть переопределена, ив ней должен быть написан собственный код. Это связано с тем, что в объекте TThread, эта процедура объявлена как абстрактная (abstract) – пустая. Это значит, что процедуре дали имя, выделили место, но её код должен быть написан объектами потомками, т.е. нами.

Метод Execute – это и есть заготовка для кода потока. То, что мы напишем здесь будет выполняться параллельно основной задаче. Давай напишем здесь следующий код:

procedure TCountObj.Execute;

Begin index:=1; //Запускаем бесконечный счётчик while index>0 do

index:=0; //Если поток остановлен, то выйти. if terminated then exit; end; end;

Begin FreeOnTerminate:=true; index:=1; //Запускаем бесконечный счётчик while index>0 do

index:=0; //Если поток остановлен, то выйти. if terminated then exit; end; end;

Begin index:=1; while index>0 do

Integer(PChar(IntToStr(index)))); Inc(index); if index>100000 then index:=0; if terminated then exit; end; end;

– Конец работы –

Используемые теги: дополнительные, Возможности, потоков0.063

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Дополнительные возможности потоков

Что будем делать с полученным материалом:

Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Еще рефераты, курсовые, дипломные работы на эту тему:

Понятие потока вектоpа Е связано с понятием повеpхности. Потоком вектоpа Е называется число силовых линий поля, пеpесекающих данную повеpхность
Электростатика раздел учения об электричестве изучающий взаимодействие неподвижных электрических зарядов и свойства постоянного электрического... Электpическое поле создаваемое неподвижными заpядами называется...

Сравнение туристских возможностей Полярного и Приполярного Урала
Статистика посещения и регистрации категорийных походов, опубликованная на официальном сайте туристско-спортивного союза России, свидетельствует на… Так же детальное изучение статистики показало приоритетные направления… Цель данной работы – сравнить туристский потенциал двух огромных территорий и выявит наиболее перспективный регион,…

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

Возможности и практические приемы мерчандайзинга
В целом к мерчандайзингу можно отнести и такое определение стратегии, как «искусство добиваться своих целей в неподконтрольной среде, с… Торговля в свою очередь переживает бурный рост. Резко возрастает количество… Стали выделяться специально подготовленные сотрудники мерчандайзеры. Задачи, стоящие перед ними, все более…

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

Возможности и пути повышения эффективности логистических систем
В нем прослеживается идея дать определение ЛС на основе общей теории систем и кибернетики, что, может быть, и оправданно в теоретическом плане, но… Зарубежные ученые, специалисты и менеджеры в области логистики применяют… Снабжение заключается в транспортировке сырья и материалов, комплектующих, запасных частей, оформлении договора с…

Возможности Интернета как рекламоносителя
В то же время, размещая баннер напрямую, рекламодатель может договориться о постоянном показе баннера на конкретных страницах сайта, либо о… Среди баннерообменных сетей российского Интернета можно выделить общие,… К недостаткам размещения рекламы в баннерообменных сетях можно отнести неудобное расположение баннеров рекламной сети…

Имиджевая реклама в интернете: особенности и возможности
Основная ее цель – быстрое привлечение потенциальных покупателей на сайт рекламодателя. Казалось бы, что еще нужно для рекламодателя? Многие… Это реально достижимые цели и помочь в их достижении способна тщательно… Собственно в этом и заключается особенность имиджевой рекламы. Рекламодатель, проводя имиджевую рекламную кампанию,…

Типы программ и возможности их назначения
Каждый утилита выполняет только одну мелкую функцию. Поэтому для решения задач пользователя, утилиты распространяются пакетами. а)… Системы программирования – это системы для разработки новых программ.

денежные потоки
Кроме того, информационная база оценки денежных потоков и ее методологическая основа в настоящие время не позволяют решать теоретические и… Это ведет не только к снижению управляемости денежными потоками, контроля за… Кроме того, это также препятствует достижению информационной прозрачности, необходимой как для внутренних, так и для…

0.036
Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • По категориям
  • По работам
  • Самоанализ ваших возможностей То же самое можно сказать и про отдельного человека. Следующий перечень вопросов, направленных на выявление и самоанализ ваших возможностей, был… Самоанализ и самомотивация Что является для меня наиболее важным стимулом? Как… Поэтому регулярная подпитка при помощи самоанализа весьма полезна.
  • NetPromoter: новые возможности профессиональной интернет-статистики Других способов ориентироваться в безграничном море Интернета у нас просто нет Невозможность игнорировать эту аксиому современной жизни ведет к… При этом, судя по проблемам, с завидной частотой возникающим у пользователей,… Из чего складывается работа над интернет-проектом (не важно в реале или в виртуале). Всего из нескольких составляющих:…
  • Логистика и информационный поток Один из подходов к изучению логистики на предприятии состоит в разделении ее на три сферы. На типовом предприятии эти три сферы будут, конечно, перекрываться, однако… При цельном подходе к логистике в расчет принимается управление материалами, полуфабрикатами и готовой продукцией на…
  • Возможности завтрашнего маркетинга Но сегодня в связи с глобализацией отношений и бизнес-процессов эта концепция обретает новый смысл.Каждый человек, живущий на планете, оказывается… Если говорить о клиентоориентированности телекоммуникационной отрасли, то пока… И это не циклические изменения, а коренные изменения фундаментальных представлений о мире. Они преобразовывают не…
  • Материальные потоки в логистике Принципиальное отличие логистического подхода от предшествующего ему управления движением материальных ресурсов заключалось в том, что если ранее… Поток представляет собой совокупность объектов, воспринимаемую как единое… Основными параметрами, характеризующими поток, являются: начальный и конечный его пункты, траектория движения, длина…