Memoria compartida protegida por Mutex
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:
El segundo proceso declara el mutex de la siguiente forma:
Cada vez que accedo a la memoria compratida, en ambos procesos:
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. |
El Mutex es único pero su Handle puede ser distinto para cada aplicación. No se debe contundir el Mutex con su Handle.
Saludos. |
Muchas gracias Escafandra.
Sólo era una duda teórica, ya que el sistema me funciona perfectamente. |
La franja horaria es GMT +2. Ahora son las 04:18:20. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi