14.2.2.3. Предостережения по поводу блокировок

14.2.2.3. Предостережения по поводу блокировок

Имеется несколько предостережений, о которых нужно знать при блокировках файлов:

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

• Эти вызовы не следует использовать в сочетании с библиотекой <stdio.h>. Эта библиотека осуществляет свое собственное буферирование. Хотя вы можете получить с помощью fileno() дескриптор нижележащего файла, действительное положение в файле может быть не там, где вы думаете. В общем, стандартная библиотека ввода/вывода не понимает блокировок файлов.

• Держите в уме, что блокировки после fork не наследуются порожденными процессами, но они остаются на своем месте после exec.

• Вызов close() с любым открытым для файла дескриптором удаляет все блокировки файла процессом, даже если другие дескрипторы для файла остаются открытыми.

То, что close() работает таким образом, является неудачным, но поскольку так была реализована первоначальная блокировка в fcntl(), POSIX ее стандартизует. Стандартизация такого поведения позволяет избежать порчи существующего кода для Unix.

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

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

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

2.2. Предостережения и рекомендации

Из книги Linux для пользователя автора Костромин Виктор Алексеевич

2.2. Предостережения и рекомендации Перед тем, как приступить к экспериментам по установке Linux как второй ОС, очень рекомендую принять некоторые меры предосторожности. Дело в том, что вам, возможно, придется произвести переразбиение диска, изменить загрузочные записи и


Исключение конфликтов блокировок

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

Исключение конфликтов блокировок В приведенном выше фрагменте кода, как и в листинге 7.6, функция pthread_cond_signal вызывалась потоком, блокировавшим взаимное исключение, относящееся к условной переменной, для которой отправлялся сигнал. Мы можем представить себе, что в худшем


Замечания по поводу безопасности

Из книги Системное программирование в среде Windows автора Харт Джонсон М

Замечания по поводу безопасности В том виде, как она здесь представлена, данная клиент-серверная система не является безопасной. Если на вашей системе выполняется сервер и кому-то известен номер порта, через который вы работаете, и имя компьютера, то он может атаковать


Соображения по поводу эффективности

Из книги Фундаментальные алгоритмы и структуры данных в Delphi автора Бакнелл Джулиан М.

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


Использование блокировок чтения/записи

Из книги QNX/UNIX [Анатомия параллелизма] автора Цилюрик Олег Иванович

Использование блокировок чтения/записи Построим приложение, использующее блокировку чтения/записи (файл sy10.cc):Эффективность блокировки чтения/записи#include <sys/syspage.h>#include <sys/neutrino.h>#include <list>// сколь угодно сложные элементы внутренней базы данных// приложения; в


Способ разрешения блокировок ("Режим блокировок")

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

Способ разрешения блокировок ("Режим блокировок") Способ разрешения блокировок определяет поведение транзакции в случае, когда она пытается отправить изменение, которое конфликтует с изменением, уже отправленным другой транзакцией. Значениями являются WAIT и NOWAIT.WAITWAIT (по


Блокировки и конфликты блокировок

Из книги Linux программирование в примерах автора Роббинс Арнольд

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


ГЛАВА 40. Менеджер блокировок.

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

ГЛАВА 40. Менеджер блокировок. Блокировки используются в многопользовательских средах для синхронизации работы и предотвращения разрушения целостности процессов работой других процессов. Firebird использует как средства блокировки операционной системы, так и собственный


Менеджер блокировок Firebird

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

Менеджер блокировок Firebird В Суперсервере о Менеджере блокировок можно думать как об отдельном "управляющем центре", с которым договариваются транзакции о приобретении прав на выполнение запросов. Менеджер блокировок включает в себя фрагмент памяти и некоторые


Таблица блокировок

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

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


10.4.6. Дополнительные предостережения

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

10.4.6. Дополнительные предостережения Стандарт POSIX предусматривает для обработчиков сигналов несколько предостережений:• Что случается, когда возвращаются обработчики для SIGFPE, SIGILL, SIGSEGV или любых других сигналов, представляющих «вычислительные исключения», не


14.2.2.2. Установка и снятие блокировок

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

14.2.2.2. Установка и снятие блокировок После заполнения структуры struct flock следующим шагом является запрос блокировки. Этот шаг осуществляется с помощью соответствующего значения аргумента cmd функции fcntl():F_GETLK   Узнать, можно ли установить блокировку.F_SETLK   Установить или


Сравнение спин-блокировок и семафоров

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

Сравнение спин-блокировок и семафоров Понимание того, когда использовать спин-блокировки, а когда семафоры является важным для написания оптимального кода. Однако во многих случаях выбирать очень просто. В контексте прерывания могут использоваться только