2011-03-14 15 views
8

¿hay algún mutex con nombre no basado en archivos en boost? Mi problema es que el archivo no se eliminará en caso de que el proceso falle. El archivo incluso sobrevivirá a un reinicio.hay un mutex con nombre no basado en el archivo en boost

cordiales, Tobias

+0

¿Es necesario compartir la exclusión mutua entre los procesos? (Supongo que lo haces si estás preguntando por un mutex * nombrado *, pero será mejor que lo veas claro). ¿Y está usando Windows o Unix (el comportamiento como con lo que se creó podría ser diferente)? –

+1

sí, necesito compartir entre procesos. El uso principal está en Win32, pero una solución portátil sería preferible, de ahí la pregunta de una solución de impulso. –

Respuesta

1

Boost.Interprocess ofrece los siguientes tipos de exclusión mutua:

#include <boost/interprocess/sync/interprocess_mutex.hpp> 

interprocess_mutex: Un no-recursivo, mutex anónima que se pueden colocar en la memoria compartida o archivos de memoria mapeados.

#include <boost/interprocess/sync/interprocess_recursive_mutex.hpp> 

interprocess_recursive_mutex: Un mutex recursivo, el anonimato que se puede colocar en la memoria o en la memoria compartida asignada archivos.

#include <boost/interprocess/sync/named_mutex.hpp> 

named_mutex: Un no-recursivo, llamado mutex.

#include <boost/interprocess/sync/named_recursive_mutex.hpp> 

named_recursive_mutex: Un recursiva, llamado mutex.

Sugiero usar el nombre mutex. Ver docs

+1

named_mutex (al menos en la configuración predeterminada) crea un archivo. Esto no es lo que quiero, de ahí mi pregunta. –

+0

Sí, mi mal. Verifico la implementación en la rama 1.46 (eche un vistazo a ) - crea el archivo en la memoria compartida. – maverik

+0

Puede ser 'boost :: thread :: mutex' hacer el trabajo. No lo he usado aunque – maverik

3

Para las ventanas es posible utilizar boost::interprocess::ipcdetail::winapi_mutex_wrapper ya que no se basa archivo

+0

Creé un boleto ya que este parece no oficial. Ver https://svn.boost.org/trac/boost/ticket/12370 – gast128

Cuestiones relacionadas