RTX – расширение реального времени для Windows NT

Имена объектов


Именованные объекты позволяют разным процессам иметь доступ к общим объектам. Максимальная длина имени, указанного при создании процесса, равна RTX_MAX_PATH символов и может включать любые символы за исключением обратной косой черты (\). Если процесс создал именованное событие, мьютекс, семафор или разделяемую память, другие объекты могут использовать это имя для вызова соответствующей функции (RtOpenEvent, RtOpenMutex, RtOpenSemaphore или RtOpenSharedMemory) для получения хэндла объекта. Имена объектов различают регистр символов.

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

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



Содержание раздела