Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Объектно-ориентированный подход к синхронизации






 

Одно из преимуществ объектно-ориентированного программирования состоит в защите, которую обеспечивает инкапсуляция компонентов данных объекта. Инкапсуляция может обеспечить для пользователя объектов «стратегии доступа к объектам и принципы их применения» [ 24 ]. В примерах, представленных в этой главе, за применяемые стратегии доступа вся ответственность возлагалась на пользователя данных. С помощью объектов и инкапсуляции ответственность можно переложить с пользователя данных на сами данные. При таком подходе создаются данные, которые, в отличие от функций, являются безопасными для потоков.

Для реализации такого подхода данные многопоточного приложения (по возможности) необходимо инкапсулировать с помощью С++-конструкций class или struct. Затем инкапсулируйте такие механизмы синхронизации, как семафоры, блокировки для обеспечения чтения-записи и мьютексы событий. Если данные или механизмы синхронизации представляют собой объекты, создайте для них интерфейсный класс. Наконец, объедините объект данных с объектами синхронизации посредством наследования или композиции, чтобы создать объекты данных, которые будут безопасны для потоков. Этот подход подробно рассматривается в главе 11.

 

Резюме

 

Для координации порядка выполнения процессов и потоков (синхронизация задач), а также доступа к разделяемым данным (синхронизация данных) можно использовать различные механизмы синхронизации. Су щ ествует четыре основных вида отношений синхронизации задач. Отношение вида «старт-старт» (CC) означает, что задача А не может начаться до тех пор, пока не начнется задача В. Отношение вида «финиш-старт» (ФС) означает, что задача А не может завершиться до тех пор, пока не начнется задача В. Отношение вида «старт-финиш» (СФ) означает, что задача А не может начаться до тех пор, пока не завершится задача В. Отношение вида «финиш-финиш» (ФФ) означает, что задачаА не может завершиться до тех пор, пока не завершится задача В. Для реализации этих отношений синхронизации задач можно использовать условную переменную pthread_cond_t, которая определена стандартом POSIX.

Для описания синхронизации данных используются некоторые типы алгоритмов модели PRAM. Стратегию доступа EREW (исключающее чтение и исключающая запись) можно реализовать с помощью мьютексного семафора. Мьютексный семафор защищает критический раздел, обеспечивал последовательный вход в него. Эта стратегия разрешает либо доступ для чтения, либо доступ для записи. Стандарт POSIX определяет мьютексный семафор типа pthread_mutex_t, который можно использовать для реализации стратегии доступа EREW. Чтобы реализовать стратегию доступа CREW (параллельное чтение и исключающая запись), можно использовать блокировки чтения-записи. Стратегия доступа CREW описывает возможность удовлетворения множества запросов на чтение, но при монопольной записи данных. Стандарт POSIX определяет объект блокировки для обеспечения чтения-записи типа pthread_rwlock_t, а объектно-ориентированный подход к синхронизации данных позволяет встроить механизм синхронизации в объект данных.

 

 

Объединение возможностей параллельного программирования и C++ средств на основе PVM

 

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

Алан Тьюринг (Alan Turing), Может ли машина думать?

 

 

Система програм м ного обеспечения PVM (Parallel Virtual Machine — параллельная виртуальная м ашина) предоставляет разработчику ПО средства для написания и выполнения программ, использующих параллелизм. Система PVM позволяет разработчику представить коллекцию сетевых компьютеров в виде единой логической машины с возможностями параллелизма. Компьютеры этой коллекции могут иметь одинаковые или различные архитектуры. В PVM-систему связываются даже компьютеры, которые попадают в категорию MPP (Massively Parallel Processor — процессор с массовым параллелизмом). Несмотря на то что PVM-программы могут разрабатываться для одного компьютера, реальные преимущества этой системы проявляются при связывании двух и более компьютеров.

 

  6.1. Классические модели параллелизма, поддерживаемые системой PVM

Система PVM в качестве средства связи между параллельно выполняющимися задачами поддерживает модель передачи сообщений. Приложение взаимодействует с PVM посредством библиотеки, которая состоит из API-интерфейсов, предназначенных для управления процессами, отправки и получения сообщений, сигнализации процессов и т.д. С++-программа взаимодействует с PVM-библиотекой точно так же, как с любыми другими библиотеками функций. С++-программе для получения доступа к функциям РVM-библиотеки не нужно создавать специальную форму или архитектуру, в то врем я как программам, написанным на других я зыках, необходимо вызывать определенные функции для инициализации среды. Это означает, что С++-программист может сочетать PVM-возможности с другими стилями С++-программирования (например, объектно-ориентированным, параметризованным, агентно-ориентированным и структурированным программированием). Благодаря использованию таких библиотек, как PVM, MPI или Linda, С++-разработчик может реализовать различные модели параллелизма, тогда как другие языки ограничены примитивами параллелизма, которые встроены в сами языки. Библиотека PVM предлагает, пожалуй, самый простой способ расширения средств языка С++ за счет возможностей параллельного программирования.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.