Модель "хозяин/рабочий" и другие модели многопоточных приложений

Модель "хозяин/рабочий" и другие модели многопоточных приложений

Программа grepMT демонстрирует модель многопоточных приложений, носящую название модели "хозяин/рабочий" ("boss/worker"), а рис. 6.3, после замены в нем термина "процесс" на термин "поток", может служить графической иллюстрацией соответствующих отношений. Главный поток (основной поток в данном случае) поручает выполнение отдельных задач рабочим потокам. Каждый рабочий, поток получает файл, в котором она должна выполнить поиск, а полученные рабочим потоком результаты передаются главному потоку во временном файле.

Существуют многочисленные вариации этой модели, одной из которых является модель рабочей группы (work crew model), в которой рабочие потоки объединяют свои усилия для решения одной задачи, причем каждый отдельный поток выполняет свою небольшую часть работы. Модель рабочей группы используется в нашем следующем примере (рис. 7.2). Рабочие группы даже могут самостоятельно распределять работу между собой без получения каких-либо указаний со стороны главного потока. В многопоточных программах может быть применена практически любая из схем управления, разработанных для коллективов в человеческом обществе. 

Рис. 7.2. Выполнение сортировки слиянием с использованием нескольких потоков

Двумя другими основными моделями являются модель "клиент/сервер" (client/server) (проиллюстрирована на рис. 7.1, а пример ее практической реализации рассматривается в главе 11) и конвейерная модель (pipeline model), в которой выполнение задания передается от одного потока к другому (пример многоступенчатого конвейера рассматривается в главе 10 и иллюстрируется на рис. 10.1).

При проектировании многопоточных систем эти модели обладают целым рядом преимуществ, к числу которых можно отнести следующие:

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

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

• Эти модели естественным образом соответствуют структуре большинства обычных задач программирования.

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

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

• Многие распространенные дефекты программ, например, нарушение условий состязаний задач и их блокирование, также можно описать с использованием простых моделей, к числу которых относятся эффективные методы использования объектов синхронизации, описанные в главах 9 и 10.

Эти классические модели потоков реализованы во многих ОС. В модели компонентных объектов (Component Object Model, COM), широко используемой во многих Windows-системах, применяется другая терминология, и хотя рассмотрение модели СОМ выходит за рамки данной книги, об этих моделях говорится в конце главы 11, где они сравниваются с другими примерами программ.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Кто в доме патентам хозяин

Из книги Журнал «Компьютерра» №36 от 04 октября 2005 года автора Журнал «Компьютерра»

Кто в доме патентам хозяин Фактически не начинаясь, в США закончилось интересное судебное разбирательство, вывернувшее наизнанку общепринятые представления о патентном законодательстве и защите прав на интеллектуальную собственность. Для того чтобы законные


Рабочий стол

Из книги Работа на ноутбуке автора Садовский Алексей

Рабочий стол Сегодня каждая операционная система, оснащенная графическим интерфейсом (то есть способная работать с окнами), включает такой важный элемент, как Рабочий стол. Если говорить простым языком, то Рабочий стол – это то, что находится за всеми окнами.На Рабочий


ГЛАВА 14. Создание многопоточных приложений

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

ГЛАВА 14. Создание многопоточных приложений В  предыдущей главе мы рассмотрели взаимосвязь между процессами, доменами приложения и контекстами. В этой мы выясним, как в рамках платформы .NET строить многопоточные приложения и как в условиях множества потоков


Рабочий стол

Из книги Windows Vista автора Вавилов Сергей

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


Поддержка распределенных приложений и отсоединенной модели программирования

Из книги Обработка баз данных на Visual Basic®.NET автора Мак-Манус Джеффри П

Поддержка распределенных приложений и отсоединенной модели программирования В технологии ADO.NET предусмотрена эффективная и гибкая поддержка приложений, распределенных между несколькими компьютерами (серверами баз данных, серверами приложений и клиентскими рабочими


Комментарии по поводу многопоточных моделей

Из книги Моделирование бизнес-процессов с BPwin 4.0 автора Маклаков Сергей Владимирович

Комментарии по поводу многопоточных моделей Для описания методов проектирования многопоточных программ используются такие термины, как пул потоков (thread pool), симметричные потоки (symmetric threads) и асимметричная потоковая организация программ (asymmetric threading), а мы при создании


4.2. Создание модели данных на основе объектной модели с помощью ERwin Translation Wizard

Из книги XSLT автора Хольцнер Стивен

4.2. Создание модели данных на основе объектной модели с помощью ERwin Translation Wizard Rational Rose позволяет строить объектную модель, но не может построить качественную физическую модель данных. Для решения этой задачи фирмой PLATINUM technology выпущена утилита ERwin Translation Wizard, позволяющая


Глава 3 . Связывание модели процессов и модели данных

Из книги Самоучитель работы на Macintosh автора Скрылина Софья

Глава 3. Связывание модели процессов и модели данных 3.1. Модель данных и ее соответствие модели процессов Функциональная модель BPwin является основой для построения модели данных. Действительно, не имея информации о том, как работает предприятие, бессмысленно строить


3.1. Модель данных и ее соответствие модели процессов

Из книги Цифровой журнал «Компьютерра» № 219 автора Журнал «Компьютерра»

3.1. Модель данных и ее соответствие модели процессов Функциональная модель BPwin является основой для построения модели данных. Действительно, не имея информации о том, как работает предприятие, бессмысленно строить модель данных. Для построения модели данных удобно


Модель информационного множества против модели дерева XSLT

Из книги Компьютер для бабушек и дедушек автора Левина Любовь Трофимовна

Модель информационного множества против модели дерева XSLT Разборщики XML передают только определенную информацию: как задается основной спецификацией информационного множества (Information Set) XML — которую можно найти по адресу www.w3.org/TR/xml-infoset, в то время как процессоры XSLT


1.3. Рабочий стол Mac OS X

Из книги автора

1.3. Рабочий стол Mac OS X Рабочий стол Mac OS X (рис. 1.11) очень похож на рабочий стол Windows. Конечно, есть свои особенности и своя терминология. Рассмотрим элементы рабочего


Гея и (как бы) хозяин природы: ждёт ли Чили новое Великое землетрясение? Евгений Золотов

Из книги автора

Гея и (как бы) хозяин природы: ждёт ли Чили новое Великое землетрясение? Евгений Золотов Опубликовано 03 апреля 2014 Природа непредсказуема. Никто не смог назвать заранее час падения Челябинского метеорита, не предвидел высоту волны, залившей


Рабочий стол

Из книги автора

Рабочий стол Что такое РАБОЧИЙ СТОЛ. То же самое, что и в жизни: поверхность, на которой расположены папки, документы, средства для ведения этих документов, всяческие вспомогательные штучки.Стол может быть аккуратно прибран, всё на своём месте, всё по стопочкам, каждая