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
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
13.2.2. Установка отображения в памяти
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. Отмена отображения областей
13.2.3. Отмена отображения областей После окончания отображения в памяти процесс может отменить отображение памяти с помощью munmap(). Это приводит к тому, что последующие доступы к этому адресу будут генерировать SIGSEGV (если только память не будет перераспределена) и сохраняет
21.2. Глифы, символы и отображения
21.2. Глифы, символы и отображения Когда вы выводите символ на любой терминал, могут произойти несколько шагов преобразования. Значение, выводимое на терминал, представляет собой номер символа, или его код. Однако такого кода символа недостаточно для определения того, что
Параметры отображения
Параметры отображения Еще одна группа атрибутов стиля управляет тем, как элемент будет отображаться на Web-странице, т. е. будет он блочным или встроенным, и будет ли он отображаться вообще. Эти атрибуты стиля применимы к любым элементам Web-страниц.Атрибут стиля visibility
Параметры отображения
Параметры отображения Еще одна группа атрибутов стиля управляет тем, как элемент будет отображаться на Web-странице, т. е. будет он блочным или встроенным, и будет ли он отображаться вообще. Эти атрибуты стиля применимы к любым элементам Web-страниц.Атрибут стиля visibility
Настройки отображения
Настройки отображения В силу того что на одной странице документа может быть большое количество текста, графики, иллюстраций, изначально InDesign отображает документ со слегка заниженным качеством – с уменьшенной детализацией графики и т. д.Для удобства пользования
5.8. Реализация с использованием отображения в память
5.8. Реализация с использованием отображения в память Теперь рассмотрим реализацию очередей сообщений Posix с использованием отображения в память, взаимных исключений и условных переменных Posix. ПРИМЕЧАНИЕ Взаимные исключения и условные переменные описаны в главе 7, а
12.5. Отображение в память в SVR4 с помощью /dev/zero
12.5. Отображение в память в SVR4 с помощью /dev/zero В листинге 12.5 приведена часть новой версии программы, претерпевшая изменения по сравнению с листингом 12.2 при переходе к использованию отображения с помощью /dev/zero.Листинг 12.5. Отображение памяти в SVR4 с помощью
Реализация паттерна««Шаблонный метод» с помощью идиомы невиртуального интерфейса
Реализация паттерна««Шаблонный метод» с помощью идиомы невиртуального интерфейса Начнем с интересной концепции, которая утверждает, что виртуальные функции почти всегда должны быть закрытыми. Сторонники этой школы предполагают, что правильно было бы оставить
Включение отображения
Включение отображения В этот момент обработчик событий Tick должен отобразить в панели toolStripStatusLabelClock текущее время, если значением по умолчанию члена-переменной DateTimeFormat является DateTimeFormat.ShowClock. Чтобы позволить пользователю переключаться между отображением даты и времени,
1.6. Реализация инструмента для выбора временных рамок с помощью UISlider
1.6. Реализация инструмента для выбора временных рамок с помощью UISlider Постановка задачи Необходимо дать пользователям возможность указывать определенное значение из диапазона и предоставить для этого удобный в применении и интуитивно понятный пользовательский
Настройка стиля отображения
Настройка стиля отображения Стиль отображения можно выбрать в любой момент и, при необходимости, изменить его параметры или создать собственный стиль, изменяя настройки граней и кромок и используя затенение и фон. Команда VISUALSTYLES загружает Диспетчер визуальных стилей
Простая реализация подсказок с помощью MFC
Простая реализация подсказок с помощью MFC Microsoft упростила добавление подсказок к кнопкам на панелях инструментов. Если вы используете AppWizard, этот процесс происходит автоматически. При генерации вашего приложения с помощью AppWizard щелкните флажок "Docking toolbar". После генерации
Контекст отображения (класс CDC)
Контекст отображения (класс CDC) Для отображения информации в окне или на любом другом устройстве приложение должно получить так называемый контекст отображения. Основные свойства контекста отображения определены в классе CDC. От него наследуется четыре различных класса,
СОФТЕРРА: Память на лица, или Лица на память
СОФТЕРРА: Память на лица, или Лица на память Автор: Алексей КлимовВышла девятая версия ACDSee. Судя по объему нововведений, это не «Девятый вал» Айвазовского [Иван Айвазовский, «Девятый вал». 1850 г] и даже не «9 рота» Бондарчука [Федор Бондарчук, «9 рота». 2005 г]. Поэтому в обзоре