Hola, compis.
Tengo dos procesos creados con Delphi 10 y trabajo con Windows 10, el primero es una aplicación de escritorio A.exe y la otra es una librería B.dll.
Ambos procesos trabajan con memoria compartidad con nombre para compartir información. Esto funciona perfectamente.
Puesto que, en tiempo de ejecución, los 2 procesos se pararán información cada pocos milisegundos, necesito evitar que los dos puedan acceder a la memoria simultaneamente, y para ello he implementado un Mutex con nombre.
El primer proceso declara el mutex de esta forma:
Código Delphi
[-]Mutex:=CreateMutex(Nil,False,MutexName);
El segundo proceso declara el mutex de la siguiente forma:
Código Delphi
[-]Mutex:=OpenMutex(SYNCHRONIZE Or MUTEX_MODIFY_STATE, False,MutexName);
Cada vez que accedo a la memoria compratida, en ambos procesos:
Código Delphi
[-]
WaitForSingleObject(Mutex,INFINITE);
ReleaseMutex(Mutex);
Aparentemente funciona bien, pero me es imposible comprobar esto en tiempo de depuración porque al poner BreakPoints nunca se produce concurrencia y espera. Por esto tengo una duda. Observo que el valor de Mutex en ambos procesos es diferente, por ejemplo:
A.Mutex=1234
B.Mutex= 874
¿No deberían aer iguales los valores de A.Mutex y B.Mutex, si son handles que apuntan a un mutex con el mismo nombre?
¿Cómo estar seguro de que en realidad es el mismo Mutex en ambos procesos?
Gracias por vuestra colaboración.
ElDuc.