8.4. Реализация с использованием взаимных исключений и условных переменных

8.4. Реализация с использованием взаимных исключений и условных переменных

Для реализации блокировок чтения-записи достаточно использовать взаимные исключения и условные переменные. В этом разделе мы рассмотрим одну из возможных реализаций, в которой предпочтение отдается ожидающим записи потокам. Это не является обязательным; возможны альтернативы.

ПРИМЕЧАНИЕ

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

Другие реализации блокировок чтения записи заслуживают отдельного изучения. В разделе 7.1.2 книги [3] представлена реализация, в которой приоритет имеют ожидающие записи потоки и предусмотрена обработка отмены выполнения потока (о которой мы вскоре будем говорить подробнее). В разделе В.18.2.3.1 стандарта IEEE 1996 [8] представлена другая реализация, в которой предпочтение имеют ожидающие записи потоки и в которой также предусмотрена обработка отмены. В главе 14 книги [12] также приводится возможная реализация, в которой приоритет имеют ожидающие записи процессы. Реализация, приведенная в этом разделе, взята из пакета АСЕ (http://www.cs.wustl.edu/~schmidt/ACE.html), автором которого является Дуг Шмидт (Doug Schmidt). Аббревиатура АСЕ означает Adaptive Communications Environment. Во всех четырех реализациях используются взаимные исключения и условные переменные. 

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

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

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

Два слова об условных комментариях

Из книги Разгони свой сайт автора Мациевский Николай

Два слова об условных комментариях Очень часто верстка страниц производится таким образом, что у нас появляется основной файл стилей и несколько дополнительных, рассчитанных на конкретные браузеры (речь идет в основном об Internet Explorer, однако иногда требуются какие-то


Обработка исключений

Из книги Delphi. Учимся на примерах автора Парижский Сергей Михайлович

Обработка исключений Исключение (exception) — это результат выполнения некорректного оператора, что привело к возникновению ошибки. В языке Object Pascal для обработки исключений предназначена специальная конструкция:try //Операторы, которые могут привести к возникновению


Источники исключений

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

Источники исключений Исключения можно классифицировать, разделив их на категории.Определение: исключительные ситуацииИсключения могут возникать при выполнении программы r в результате следующих ситуаций.1 Попытка квалифицированного вызова a.f и обнаружение, что a = Void.2


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

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

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


7.7. Атрибуты взаимных исключений и условных переменных

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

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


10.14. Реализация с использованием FIFO

Из книги Англо-русский учебный словарь по технологиям сетей передачи данных автора Брунова Елена Георгиевна

10.14. Реализация с использованием FIFO Займемся реализацией именованных семафоров Posix с помощью каналов FIFO. Именованный семафор реализуется как канал FIFO с конкретным именем. Неотрицательное количество байтов в канале соответствует текущему значению семафора. Функция sem_post


10.16. Реализация с использованием семафоров System V

Из книги VBA для чайников автора Каммингс Стив

10.16. Реализация с использованием семафоров System V Приведем еще один пример реализации именованных семафоров Posix — на этот раз с использованием семафоров System V. Поскольку семафоры System V появились раньше, чем семафоры Posix, эта реализация позволяет использовать последние в


Список условных сокращений

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

Список условных сокращений См. – смотритеСр. – сравнитеAbbr. – сокращение, аббревиатураA – имя прилагательноеInt. – междометиеN – имя существительноеPl. – множественное числоV


Курс на использование условных выражений

Из книги Разработка ядра Linux автора Лав Роберт

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


11.3. Перехват исключений

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

11.3. Перехват исключений В языке C++ исключения обрабатываются в предложениях catch. Когда какая-то инструкция внутри try-блока возбуждает исключение, то просматривается список последующих предложений catch в поисках такого, который может его обработать.Catch-обработчик состоит


19.2.6. Спецификации исключений

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

19.2.6. Спецификации исключений С помощью спецификации исключений (см. раздел 11.4) в объявлении функции указывается множество исключений, которые она может возбуждать прямо или косвенно. Спецификация позволяет гарантировать, что функция не возбудит не перечисленные в ней


Использование условных переменных

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

Использование условных переменных Если код, который необходимо протестировать, выполняется не в контексте процесса, или необходим более глобальный метод для контроля новых функций, то можно использовать условные переменные. Этот подход даже более простой, чем