1.4. Пространства имен
1.4. Пространства имен
Если два неродственных процесса используют какой-либо вид IPC для обмена информацией, объект IPC должен иметь имя или идентификатор, чтобы один из процессов (называемый обычно сервером — server) мог создать этот объект, а другой процесс (обычно один или несколько клиентов — client) мог обратиться к этому конкретному объекту.
Программные каналы (pipes) именами не обладают (и поэтому не могут использоваться для взаимодействия между неродственными процессами), но каналам FIFO сопоставляются имена в файловой системе, являющиеся их идентификаторами (поэтому каналы FIFO могут использоваться для взаимодействия неродственных процессов). Для других типов IPC, рассматриваемых в последующих главах, используются дополнительные соглашения об именовании (naming conventions). Множество возможных имен для определенного типа IPC называется его пространством имен (name space). Пространство имен — важный термин, поскольку для всех видов IPC, за исключением простых каналов, именем определяется способ связи клиента и сервера для обмена сообщениями.
В табл. 1.2 сведены соглашения об именовании для различных видов IPC.
Таблица 1.2. Пространства имен для различных типов IPC
Тип IPC Пространство имен для создания или открытия Идентификатор после открытия Posix.1 1996 Unix 98 Канал (Без имени) Дескриптор • • FIFO Имя файла (pathname) Дескриптор • • Взаимное исключение Posix (Без имени) Указатель типа pthread_mutex_t • • Условная переменная Posix (Без имени) Указатель типа pthread_cond_t • • Блокировка чтения-записи Posix (Без имени) Указатель типа pthread_rwlock_t • Блокировка записей fcntl Имя файла Дескриптор • • Разделяемая память Posix Posix-имя IPC Дескриптор • • Очередь сообщений System V Ключ key_t Идентификатор IPC System V • Семафор System V Ключ key_t Идентификатор IPC System V • Разделяемая память System V Ключ key_t Идентификатор IPC System V • Двери (doors) Имя файла Дескриптор Удаленный вызов процедур (RPC) Sun Программа/версия Дескриптор (handle) RPC Сокет TCP IP-адрес и порт TCP Дескриптор .1g • Сокет UDP IP-адрес и порт TCP Дескриптор .1g • Доменный сокет Unix (domain socket) Полное имя файла Дескриптор .1g •Здесь также указано, какие формы IPC содержатся в стандарте Posix.1 1996 года и какие были включены в стандарт Unix 98. Об обоих этих стандартах более подробно рассказано в разделе 1.7. Для сравнения мы включили в эту таблицу три типа сокетов, которые подробно описаны в [24]. Обратите внимание, что интерфейс сокетов (Application Program Interface — API) стандартизируется рабочей группой Posix.1g и должен в будущем стать частью стандарта Posix.1.
Хотя стандарт Posix. 1 и дает возможность использования семафоров, их поддержка не является обязательной для производителей. В табл. 1.3 сведены функции, описанные в стандартах Posix.1 и Unix 98. Каждая функция может быть обязательной (mandatory), неопределенной (not defined) или необязательной (дополнительной — optional). Для необязательных функций мы указываем имя константы (например, _POSIX_THREADS), которая будет определена (обычно в заголовочном файле <unistd.h>), если эта функция поддерживается. Обратите внимание, что Unix 98 содержит в себе Posix.1 в качестве подмножества.
Таблица 1.3. Доступность различных форм IPC
Тип IPC Posix.1 1996 Unix 98 Программный канал Обязателен Обязателен FIFO Обязателен Обязателен Взаимное исключение Posix _POSIX_THREADS Обязателен Условная переменная Posix _POSIX_THREADS Обязателен Взаимные исключения и условные переменные между процессами _POSIX_THREADS_PROCESS_SHARED Обязателен Блокировка чтения-записи Posix (He определен) Обязателен Блокировка записей fcntl Обязателен Обязателен Очередь сообщений Posix _POSIX_MESSAGE_PASSING _XOPEN_REALTIME Семафоры Posix _POSIX_SEMAPHORES_ _XOPEN_REALTIME Память с общим доступом Posix _POSIX_SHARED_MEMORY_OBJECTS _XOPEN_REALTIME Очередь сообщений System V (He определен) Обязателен Семафор System V (He определен) Обязателен Память с общим доступом System V (He определен) Обязателен Двери (doors) (He определен) (Не определен) Удаленный вызов процедур Sun (He определен) (Не определен) Отображение памяти mmap _POSIX_MAPPED_FILES или POSIX_SHARED_MEMORY_OBJECTS Обязателен Сигналы реального времени (realtime signals) _POSIX_REALTIME_SIGNALS _XOPEN_REALTIMEБолее 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
1.4. Пространства имен
1.4. Пространства имен Если два неродственных процесса используют какой-либо вид IPC для обмена информацией, объект IPC должен иметь имя или идентификатор, чтобы один из процессов (называемый обычно сервером — server) мог создать этот объект, а другой процесс (обычно один или
Пространства имен и модули
Пространства имен и модули Системы имеют подсистемы, которые в свою очередь состоят из подсистем и так до бесконечности — именно поэтому мы всегда движемся сверху вниз. — Алан Перлис (Alan Perlis) Пространство имен — очень важный инструмент для управления именами и снижения
Пользовательские пространства имен
Пользовательские пространства имен До этого момента мы создавали небольшие тестовые программы, используя пространства имен, существующие в среде .NET (в частности, пространство имен System). Но иногда при создании приложения бывает удобно объединить связанные типы в одном
Вложенные пространства имен
Вложенные пространства имен Совершенствуя организацию своих типов, вы имеете возможность определить пространства имен в рамках других пространств имен. Библиотеки базовых классов .NET часто используют такие вложений, чтобы обеспечить более высокий уровень организации
Дополнительные пространства имен ADO.NET
Дополнительные пространства имен ADO.NET В дополнение к пространствам имен .NET, определяющим типы конкретного поставщика данных, библиотеки базовых классов предлагают ряд дополнительных пространств имен, связанных с ADO.NET (табл. 22.4).Следует понимать, что эта глава не
Пространства имен ASP.NET 2.0
Пространства имен ASP.NET 2.0 В библиотеках базовых классов .NET 2.0 предлагается не менее 34 пространств имен, имеющих отношение к Web. Всю эту совокупность пространств имен можно разбить на четыре главные группы.• Базовые функциональные возможности (типы, обеспечивающие
Пространства имен .NET для Web-сервисов XML
Пространства имен .NET для Web-сервисов XML Теперь, когда у вас есть база для понимания принципов функционирования Web-сервисов XML, мы с вами можем заняться построением такого объекта в рамках платформы .NET. Библиотеки базовых классов определяют целый ряд пространств имен,
2.7. Использование пространства имен
2.7. Использование пространства имен Предположим, что мы хотим предоставить в общее пользование наш класс Array, разработанный в предыдущих примерах. Однако не мы одни занимались этой проблемой; возможно, кем-то где-то, скажем, в одном из подразделений компании Intel был
8.5. Определения пространства имен А
8.5. Определения пространства имен А По умолчанию любой объект, функция, тип или шаблон, объявленный в глобальной области видимости, также называемой областью видимости глобального пространства имен, вводит глобальную сущность. Каждая такая сущность обязана иметь
8.5.1. Определения пространства имен
8.5.1. Определения пространства имен Определение пользовательского пространства имен начинается с ключевого слова namespace, за которым следует идентификатор. Он должен быть уникальным в той области видимости, в которой определяется данное пространство; наличие другой
8.5.3. Вложенные пространства имен
8.5.3. Вложенные пространства имен Мы уже упоминали, что пользовательские пространства имен могут быть вложенными. Такие пространства применяются для дальнейшего структурирования кода нашей библиотеки.// ---- primer.h ----namespace cplusplus_primer {// первое вложенное пространство имен://
8.5.5. ПОО и члены пространства имен
8.5.5. ПОО и члены пространства имен Как уже было сказано, определение пространства имен может состоять из разрозненных частей и размещаться в разных файлах. Следовательно, член пространства разрешено объявлять во многих файлах. Например:// primer.hnamespace cplusplus_primer {// ...void inverse(
8.5.6. Безымянные пространства имен
8.5.6. Безымянные пространства имен Может возникнуть необходимость определить объект, функцию, класс или любую другую сущность так, чтобы она была видимой только в небольшом участке программы. Это еще один способ решения проблемы засорения глобального пространства
8.6.1. Псевдонимы пространства имен
8.6.1. Псевдонимы пространства имен Псевдоним пространства имен используется для задания короткого синонима имени пространства. Например, длинное имяnamespace International_Business_Machines{ /* ... */ }может быть ассоциировано с более коротким синонимом:namespace IBM = International_Business_Machines;Объявление