10.15. Реализация с помощью отображения в память

10.15. Реализация с помощью отображения в память

Теперь займемся реализацией именованных семафоров Posix с помощью отображаемых в память файлов вместе со взаимными исключениями и условными переменными Posix. Реализация, аналогичная данной, приведена в разделе В.11.3 Обоснования стандарта IEEE 1996 [8].

ПРИМЕЧАНИЕ

Отображаемые в память файлы описаны в главах 12 и 13. Данный раздел можно отложить, с тем чтобы вернуться к нему после прочтения этих глав. 

Прежде всего приведем текст нашего заголовочного файла semaphore.h (листинг 10.27), в котором определяется фундаментальный тип sem_t.

Тип sem_t

1-7 Структура данных семафора содержит взаимное исключение, условную переменную и беззнаковое целое, в котором хранится текущее значение семафора. Как уже говорилось в связи с листингом 10.21, поле sem_magiс получает значение SEM_MAGIC при инициализации структуры.

Листинг 10.27. Заголовочный файл semaphore.h

//my_pxsem_mmap/semaphore.h

1  /* фундаментальный тип */

2  typedef struct {

3   pthread_mutex_t sem_mutex; /* блокируется при проверке и изменении значения семафора */

4   pthread_cond_t sem_cond; /* при изменении нулевого значения */

5   unsigned int sem_count; /* значение семафора */

6   int sem_magic; /* магическое значение, если семафор открыт */

7  } mysem_t;

8  #define SEM_MAGIC 0x67458923

9  #ifdef SEM_FAILED

10 #undef SEM_FAILED

11 #define SEM_FAILED ((mysem_t *)(-1)) /* чтобы избежать предупреждений компилятора */

12 #endif

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

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

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

СОФТЕРРА: Память на лица, или Лица на память

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

СОФТЕРРА: Память на лица, или Лица на память Автор: Алексей КлимовВышла девятая версия ACDSee. Судя по объему нововведений, это не «Девятый вал» Айвазовского [Иван Айвазовский, «Девятый вал». 1850 г] и даже не «9 рота» Бондарчука [Федор Бондарчук, «9 рота». 2005 г]. Поэтому в обзоре


Включение отображения

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

Включение отображения В этот момент обработчик событий Tick должен отобразить в панели toolStripStatusLabelClock текущее время, если значением по умолчанию члена-переменной DateTimeFormat является DateTimeFormat.ShowClock. Чтобы позволить пользователю переключаться между отображением даты и времени,


Простая реализация подсказок с помощью MFC

Из книги Исчерпывающее руководство по написанию всплывающих подсказок автора Джек Роджер

Простая реализация подсказок с помощью MFC Microsoft упростила добавление подсказок к кнопкам на панелях инструментов. Если вы используете AppWizard, этот процесс происходит автоматически. При генерации вашего приложения с помощью AppWizard щелкните флажок "Docking toolbar". После генерации


Настройки отображения

Из книги Adobe InDesign CS3 автора Завгородний Владимир

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


Контекст отображения (класс CDC)

Из книги Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT автора Фролов Александр Вячеславович

Контекст отображения (класс CDC) Для отображения информации в окне или на любом другом устройстве приложение должно получить так называемый контекст отображения. Основные свойства контекста отображения определены в классе CDC. От него наследуется четыре различных класса,


Реализация паттерна««Шаблонный метод» с помощью идиомы невиртуального интерфейса

Из книги Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ автора Мейерс Скотт

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


5.8. Реализация с использованием отображения в память

Из книги UNIX: взаимодействие процессов автора Стивенс Уильям Ричард

5.8. Реализация с использованием отображения в память Теперь рассмотрим реализацию очередей сообщений Posix с использованием отображения в память, взаимных исключений и условных переменных Posix.  ПРИМЕЧАНИЕ Взаимные исключения и условные переменные описаны в главе 7, а


12.5. Отображение в память в SVR4 с помощью /dev/zero

Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов. автора Дронов Владимир

12.5. Отображение в память в SVR4 с помощью /dev/zero В листинге 12.5 приведена часть новой версии программы, претерпевшая изменения по сравнению с листингом 12.2 при переходе к использованию отображения с помощью /dev/zero.Листинг 12.5. Отображение памяти в SVR4 с помощью


Параметры отображения

Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов автора Дронов Владимир

Параметры отображения Еще одна группа атрибутов стиля управляет тем, как элемент будет отображаться на Web-странице, т. е. будет он блочным или встроенным, и будет ли он отображаться вообще. Эти атрибуты стиля применимы к любым элементам Web-страниц.Атрибут стиля visibility


Параметры отображения

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

Параметры отображения Еще одна группа атрибутов стиля управляет тем, как элемент будет отображаться на Web-странице, т. е. будет он блочным или встроенным, и будет ли он отображаться вообще. Эти атрибуты стиля применимы к любым элементам Web-страниц.Атрибут стиля visibility


13.2.2. Установка отображения в памяти

Из книги AutoCAD 2008 для студента: популярный самоучитель автора Соколова Татьяна Юрьевна

13.2.2. Установка отображения в памяти Новые карты памяти создаются с помощью системного вызова mmap().#include <sys/mman.h>caddr_tmmap(caddr_t address, size_t length , int protection, int flags, int fd, off_t offset);Параметр address указывает, где именно в памяти необходимо отображать данные. Обычно address — это NULL, который


13.2.3. Отмена отображения областей

Из книги iOS. Приемы программирования автора Нахавандипур Вандад

13.2.3. Отмена отображения областей После окончания отображения в памяти процесс может отменить отображение памяти с помощью munmap(). Это приводит к тому, что последующие доступы к этому адресу будут генерировать SIGSEGV (если только память не будет перераспределена) и сохраняет


21.2. Глифы, символы и отображения

Из книги C++ для начинающих автора Липпман Стенли

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


Настройка стиля отображения

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

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


1.6. Реализация инструмента для выбора временных рамок с помощью UISlider

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

1.6. Реализация инструмента для выбора временных рамок с помощью UISlider Постановка задачи Необходимо дать пользователям возможность указывать определенное значение из диапазона и предоставить для этого удобный в применении и интуитивно понятный пользовательский