Составители:
екта - одну из функций Openxxx. Две программы могут заранее определить имя совме-
стно используемого объекта. Кроме того, одна из программ способна передать другой
это имя посредством совместно используемой области памяти функций DDEML (DDE
Management Library - библиотека управления динамическим обменом данных) или кана-
ла.
BOOL DuplicateHandle(
HANDLE hSourceProcess, // процесс, которому принадлежит
// исходный объект
HANDLE hSource, // дескриптор исходного объекта
HANDLE hTargetProcess, // процесс, который хочет создать
// копию дескриптора
LPHANDLE lphTarget, // переменная для записи копии дескриптора
DWORD fdwAccess, // запрашиваемые привилегии доступа
BOOL bInherit, // может ли наследоваться копия дескриптора?
DWORD fdwOptions ); // дополнительные операции, например
// закрытие исходного дескриптора
HANDLE OpenMutex(
DWORD fdwAccess, //запрашиваемые привилегии доступа
BOOL binherit, // TRUE - дочерний процесс может
// наследовать этот дескриптор
LPTSTR lpszName ); // имя исключающего семафора
HANDLE OpenSemaphore(
DWORD fdwAccess, // запрашиваемые привилегии доступа
BOOL bInherit, //TRUE - дочерний процесс может
// наследовать этот дескриптор
LPTSTR lpszName ); // имя семафора
HANDLE OpenEvent(
DWORD fdwAccess, // запрашиваемые привилегии доступа
BOOL bInherit, // TRUE - дочерний процесс может
// наследовать этот дескриптор
LPTSTR lpszName ); // имя события
Используемый в этом примере тип данных LPTSTR - это обобщенный текстовый
тип, который компилируется по-разному в зависимости от того, какой стандарт, Unicode
или ASCII, поддерживается приложением.
Семафоры, исключающие семафоры и объекты событий будут сохраняться в памя-
ти до тех пор, пока не завершатся все использующие их процессы или пока с помощью
функции CloseHandle не будут закрыты все дескрипторы соответствующего объекта:
BOOLCloseHandle(hObject);
Критический раздел представляет собой объект, выполняющий те же функции,
что и исключающий семафор, но в отличие от последнего критический раздел не может
наследоваться. Оба объекта доступны только для одного процесса. Преимущество кри-
тических разделов перед исключающими семафорами состоит в том, что они проще в
управлении и гораздо быстрее работают [12].
Терминология, принятая для функций, которые используются при работе с крити-
ческими разделами, отличается от терминологии, разработанной для функций управле-
ния семафорами, исключающими семафорами и событиями, однако сами функции вы-
полняют одни и те же операции. В частности, принято говорить не о создании
75
екта - одну из функций Openxxx. Две программы могут заранее определить имя совме-
стно используемого объекта. Кроме того, одна из программ способна передать другой
это имя посредством совместно используемой области памяти функций DDEML (DDE
Management Library - библиотека управления динамическим обменом данных) или кана-
ла.
BOOL DuplicateHandle(
HANDLE hSourceProcess, // процесс, которому принадлежит
// исходный объект
HANDLE hSource, // дескриптор исходного объекта
HANDLE hTargetProcess, // процесс, который хочет создать
// копию дескриптора
LPHANDLE lphTarget, // переменная для записи копии дескриптора
DWORD fdwAccess, // запрашиваемые привилегии доступа
BOOL bInherit, // может ли наследоваться копия дескриптора?
DWORD fdwOptions ); // дополнительные операции, например
// закрытие исходного дескриптора
HANDLE OpenMutex(
DWORD fdwAccess, //запрашиваемые привилегии доступа
BOOL binherit, // TRUE - дочерний процесс может
// наследовать этот дескриптор
LPTSTR lpszName ); // имя исключающего семафора
HANDLE OpenSemaphore(
DWORD fdwAccess, // запрашиваемые привилегии доступа
BOOL bInherit, //TRUE - дочерний процесс может
// наследовать этот дескриптор
LPTSTR lpszName ); // имя семафора
HANDLE OpenEvent(
DWORD fdwAccess, // запрашиваемые привилегии доступа
BOOL bInherit, // TRUE - дочерний процесс может
// наследовать этот дескриптор
LPTSTR lpszName ); // имя события
Используемый в этом примере тип данных LPTSTR - это обобщенный текстовый
тип, который компилируется по-разному в зависимости от того, какой стандарт, Unicode
или ASCII, поддерживается приложением.
Семафоры, исключающие семафоры и объекты событий будут сохраняться в памя-
ти до тех пор, пока не завершатся все использующие их процессы или пока с помощью
функции CloseHandle не будут закрыты все дескрипторы соответствующего объекта:
BOOLCloseHandle(hObject);
Критический раздел представляет собой объект, выполняющий те же функции,
что и исключающий семафор, но в отличие от последнего критический раздел не может
наследоваться. Оба объекта доступны только для одного процесса. Преимущество кри-
тических разделов перед исключающими семафорами состоит в том, что они проще в
управлении и гораздо быстрее работают [12].
Терминология, принятая для функций, которые используются при работе с крити-
ческими разделами, отличается от терминологии, разработанной для функций управле-
ния семафорами, исключающими семафорами и событиями, однако сами функции вы-
полняют одни и те же операции. В частности, принято говорить не о создании
75
Страницы
- « первая
- ‹ предыдущая
- …
- 71
- 72
- 73
- 74
- 75
- …
- следующая ›
- последняя »
