|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
Object Names
Named objects provide an easy way for processes to share object handles. The name specified by the creating process is limited to MAX_PATH characters, and can include any character except the backslash path-separator character (\). Once a process has created a named event, mutex, semaphore, or timer object, other processes can use the name to call the appropriate function (OpenEvent, OpenMutex, OpenSemaphore, or OpenWaitableTimer) to open a handle to the object. Name comparison is case sensitive.
The names of event, mutex, semaphore, timer, and file-mapping objects share the same name space. If you specify a name that is in use by an object of another type when creating an object, the function succeeds, but GetLastError returns ERROR_ALREADY_EXISTS. Therefore, when creating named objects, use unique names and be sure to check function return values for duplicate-name errors. For example, if the name specified in a call to the CreateMutex function matches the name of an existing mutex object, the function returns a handle of the existing object. In this case, the call to CreateMutex is equivalent to a call to the OpenMutex function. Having multiple processes use CreateMutex for the same mutex is therefore equivalent to having one process that calls CreateMutex while the other processes call OpenMutex, except that it eliminates the need to ensure that the creating process is started first. When using this technique for mutex objects, however, none of the calling processes should request immediate ownership of the mutex. If multiple processes do request immediate ownership, it can be difficult to predict which process actually gets the initial ownership.
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
Объектные Имена
Поименованные объекты обеспечивают легкий путь для процессов, чтобы распространять объектные ручки. Имя определенное создающим процессом ограниченное символами MAX_PATH, и может включить любой символ кроме пути-разделителя символа обратной косой черты (\). Как только процесс создал поименованный случай, mutex, семафор, или таймерный объект, другие процессы могут использовать имя, чтобы называть подходящую функцию (OpenEvent, OpenMutex, OpenSemaphore, или OpenWaitableTimer), чтобы открывать ручку на объект. Сравнение Имени является случаем чувствительным.
Имена случая, mutex, семафора, таймер, и акция файлового распределения объектов то же пространство имени. Если Вы определяете имя, которое используется объектом другого типа при создании объекта, функция получает, но возврат GetLastError ERROR_ALREADY_EXISTS. Следовательно, при создании поименованных объектов, использовать уникальные имена и не забывать проверять функциональные обратные величины на наличие двойного имени ошибок. Например, если имя определялось бы на вызове в функцию CreateMutex соответствует имени существующего mutex объекта, функция возвращает ручку существующего объекта. В этом случае, вызов на CreateMutex - эквивалент вызову в функции OpenMutex. Иметь многочисленное использование процессов CreateMutex для того же mutex - следовательно эквивалент, чтобы иметь один процесс, который называет CreateMutex пока другой вызов процессов OpenMutex, за исключением того это это устраняет необходимость, чтобы проверять, что создающий процесс запускается сначала. При использовании этой техники для mutex объектов, тем не менее, ни один из вызова процессов не должен запрашивать безотлагательную собственность на mutex. Если многочисленные процессы запрашивают безотлагательную собственность, он может быть трудн предсказывать какой процесс действительно получает начальную собственность.
|
|
|
|
| |