Pregunta

Dos procesos de Windows tienen la memoria asignada al mismo archivo compartido. Si el archivo consta de contadores, ¿es apropiado usar las funciones Interlocked * (como InterlockedIncrement ) para actualizar esos contadores? ¿Estos sincronizarán el acceso a través de los procesos? ¿O necesito usar algo más pesado, como un mutex? O tal vez el mecanismo de memoria compartida en sí mismo asegura vistas consistentes.

¿Fue útil?

Solución

De MSDN :

  

...

     

La API enclavada

     

Las funciones entrelazadas proporcionan un   mecanismo simple para sincronizar   acceso a una variable compartida por   hilos múltiples También realizan   operaciones en variables en un atómico   manera. Los hilos de diferentes   los procesos pueden usar estas funciones si   la variable está en la memoria compartida.

Entonces, sí, es seguro con su enfoque de memoria compartida.

Otros consejos

Las funciones entrelazadas están destinadas exactamente a ese tipo de uso.

De http://msdn.microsoft.com/en-us/ library / ms684122.aspx :

  

Los hilos de diferentes procesos pueden usar estas funciones si la variable está en la memoria compartida.

Por supuesto, si necesita tener más de un elemento actualizado atómicamente, deberá usar un mutex u otro objeto de sincronización que funcione en todos los procesos. No hay nada incorporado en el mecanismo de memoria compartida para proporcionar sincronización para acceder a la memoria compartida: deberá usar las funciones entrelazadas o un objeto de sincronización.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top